मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं। हमें यह जांचना है कि क्या हम t को किसी भी दिशा (बाएं या दाएं) में दो स्थान घुमाकर (rotate) s प्राप्त कर सकते हैं।
उदाहरण के लिए, यदि इनपुट s = "kolkata", t = "takolka" है, तो आउटपुट True होगा क्योंकि हम "takolka" को बाईं ओर दो बार घुमाकर "kolkata" प्राप्त कर सकते हैं।
समाधान दृष्टिकोण
हम t के दोनों संभावित रोटेशन (बाएं 2 और दाएं 2) बनाते हैं और जांचते हैं कि क्या कोई s के बराबर है।
एल्गोरिदम चरण:
- यदि
len(s) != len(t), तो False लौटाएं l = len(t)- बाएं रोटेशन (अंतिम 2 वर्ण आगे):
left_rot = t[l-2:] + t[:l-2] - दाएं रोटेशन (पहले 2 वर्ण अंत में):
right_rot = t[2:] + t[:2] - यदि
s == left_rotयाs == right_rot, तो True लौटाएं - अन्यथा False लौटाएं
पायथन कार्यान्वयन
def solve(s, t):
if len(s) != len(t):
return False
l = len(t)
left_rot = t[l-2:] + t[:l-2]
right_rot = t[2:] + t[:2]
return s == left_rot or s == right_rot
s = "kolkata"
t = "takolka"
print(solve(s, t)) # True
इनपुट
"kolkata", "takolka"
आउटपुट
True
व्याख्या:
t = "takolka" (लंबाई 7)
- बाएं रोटेशन 2:
t[5:] + t[:5]="ka"+"takol"="katakol"❌ - दाएं रोटेशन 2:
t[2:] + t[:2]="kolka"+"ta"="kolkata"✓
दाएं रोटेशन s से मेल खाता है।