मान लीजिए हमारे पास दो स्ट्रिंग्स, A और B हैं। हम स्ट्रिंग A को घुमाएंगे और जांचेंगे कि क्या यह घुमाने की किसी स्थिति में B से मेल खाता है, यदि हां तो true वापस करें, अन्यथा false। उदाहरण के लिए, यदि A = 'abcde', और B = 'bcdea' तो उत्तर true होगा, क्योंकि A को घुमाकर B में बदला जा सकता है।
हल करने के चरण
- जब दोनों A और B खाली हों, तो true वापस करें, जब दोनों की लंबाई अलग हो तो false वापस करें
- A := A को A के साथ जोड़ें
- i := 0, और j := 0
- जब तक i < A की लंबाई
- यदि A की लंबाई - i + 1 < B की लंबाई, तो false वापस करें
- जब तक i < A की लंबाई और j < B की लंबाई और A[i] = B[j]
- i और j को 1 से बढ़ाएं
- यदि j = B की लंबाई तो true वापस करें
- यदि j 0 नहीं है, तो i को 1 से घटाएं
- j := 0
- i को 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
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]:
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