मैं एसीएम 2003 से समस्या को उद्धृत करूंगा:
लंबाई n (1 <= n <= 100000) की एक स्ट्रिंग पर विचार करें। इसका न्यूनतम लेक्सोग्राफिक रोटेशन निर्धारित करें। उदाहरण के लिए, स्ट्रिंग "अलबाला" के घुमाव हैं:
alabala
Labalaa
abalaal
balaala
alaalab
laalaba
aalabal
और उनमें से सबसे छोटा है "नीला"।
समाधान के लिए - मुझे पता है कि मुझे एक प्रत्यय सरणी का निर्माण करने की आवश्यकता है - और मान लें कि मैं ओ (एन) में ऐसा कर सकता हूं। मेरा प्रश्न अभी भी है, मैं O (n) में सबसे छोटी घुमाव कैसे पा सकता हूं? (n = एक स्ट्रिंग की लंबाई)
मुझे इस समस्या में बहुत दिलचस्पी है और अभी भी मुझे किसी भी तरह से समाधान नहीं मिला है। मुझे अवधारणा में और अधिक दिलचस्पी है और समस्या को हल करने के लिए और कंक्रीट कार्यान्वयन में नहीं।
नोट: न्यूनतम रोटेशन का मतलब उसी क्रम में होता है जैसे अंग्रेजी शब्दकोश में - "डावर" "शब्द" से पहले होता है क्योंकि d, w से पहले होता है।
संपादित करें: प्रत्यय सरणी निर्माण में O (N) लगता है
पिछले संस्करण: मुझे लगता है कि मुझे एक समाधान मिला !!! अगर मैं सिर्फ दो तार मिला दूं तो क्या होगा? तो अगर स्ट्रिंग "अलाबाला" है, तो नया तार मुझे "अलाबालाबाला" कहेगा और अब मैं इसका एक प्रत्यय सरणी (O (2n) = O (n) में बनाऊंगा) और पहला प्रत्यय मिला? मुझे लगता है कि यह सही हो सकता है। तुम क्या सोचते हो? धन्यवाद!