मान लीजिए हमारे पास एक स्ट्रिंग s है। हमें यह जांचना है कि क्या यह स्ट्रिंग किसी सम लंबाई के पैलिंड्रोम को समाहित करती है या नहीं।
उदाहरण के लिए, यदि इनपुट s = "afternoon" है, तो आउटपुट True होगा क्योंकि "afternoon" में सम लंबाई का पैलिंड्रोम "noon" है।
समाधान दृष्टिकोण
कोई भी सम लंबाई का पैलिंड्रोम कम से कम दो समान लगातार वर्णों (जैसे "aa", "bb", "oo") से शुरू होना चाहिए। इसलिए हम केवल आसन्न समान वर्णों की जांच करते हैं।
एल्गोरिदम चरण:
i0 सेlen(string)-1तक के लिए:- यदि
string[i] == string[i+1], तो True लौटाएं - False लौटाएं
पायथन कार्यान्वयन
def solve(string):
for i in range(len(string) - 1): # अंतिम इंडेक्स तक
if string[i] == string[i + 1]:
return True
return False
s = "afternoon"
print(solve(s)) # True
इनपुट
"afternoon"
आउटपुट
True
व्याख्या:
"afternoon" में "oo" (इंडेक्स 5,6 पर) दो समान लगातार वर्ण हैं, जो लंबाई 2 के पैलिंड्रोम का केंद्र बनाते हैं। पूरा "noon" लंबाई 4 का पैलिंड्रोम है।
नोट:
मूल कोड में range(0, len(string)) था जिससे अंतिम इटरेशन में string[i+1] आउट ऑफ बाउंड्स हो सकता है। सही रेंज range(len(string)-1) है।