मान लीजिए हमारे पास दो तार हैं, ए और बी। हम स्ट्रिंग ए को घुमाएंगे और जांचेंगे कि यह घूर्णन की किसी भी स्थिति में बी से मेल खाता है या नहीं, यदि ऐसा है तो सही है, अन्यथा गलत है। उदाहरण के लिए, यदि A ='abcde', और B ='bcdea' तो उत्तर सही होगा, क्योंकि A को घुमाने के बाद B में बदला जा सकता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- जब A और B दोनों खाली हों, तो सही लौटें, जब दोनों अलग-अलग लंबाई के हों, तो झूठी वापसी करें
- A :=A के बाद A को जोड़ना
- i :=0, और j :=0
- जबकि मैं <ए की लंबाई
- यदि ए की लंबाई - i + 1 <बी की लंबाई, तो झूठी वापसी करें
- जबकि मैं <ए और जे की लंबाई <बी और ए की लंबाई [i] =बी [जे]
- i और j को 1 से बढ़ाएं
- अगर j =B की लंबाई है तो सही है
- यदि j 0 नहीं है, तो i को 1 से घटाएं
- j :=0
- मैं 1 से बढ़ाएँ
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object):
def rotateString(self, A, B):
if not A and not B:
return True
if len(A) != len(B):
return False
A = A*2
i = 0
j=0
#print(A,B)
while i < len(A):
if len(A)-i+1<len(B):
return False
while i<len(A) and j < len(B) and A[i] == B[j]:
#print("Here!",i,j)
i+=1
j+=1
if j == len(B):
return True
if j:
i-=1
j=0
i+=1
ob1 = Solution()
print(ob1.rotateString("abcde", "cdeab")) इनपुट
"abcde" "cdeab"
आउटपुट
True