मान लीजिए हमारे पास एक स्ट्रिंग s है। हमें यह जांचना है कि इसके सभी पैलिंड्रोमिक सबस्ट्रिंग्स विषम लंबाई के हैं या नहीं।
उदाहरण के लिए, यदि इनपुट s = "levelopmadam" है, तो आउटपुट True होगा क्योंकि इसमें दो पैलिंड्रोमिक सबस्ट्रिंग्स "level" और "madam" हैं जो दोनों विषम लंबाई (5) के हैं।
समाधान दृष्टिकोण
हम सभी संभावित सबस्ट्रिंग्स उत्पन्न करते हैं और जांचते हैं कि क्या कोई सम लंबाई का पैलिंड्रोम मौजूद है। यदि मिलता है, तो False लौटाते हैं।
एल्गोरिदम चरण:
- प्रत्येक प्रारंभिक इंडेक्स
iके लिए: - खाली स्ट्रिंग
tempसे शुरू करें - प्रत्येक अंतिम इंडेक्स
j(i से अंत तक) के लिए: tempमेंs[j]जोड़ें- यदि
tempकी लंबाई सम है और यह पैलिंड्रोम है, तो False लौटाएं - यदि कोई सम-लंबाई पैलिंड्रोम नहीं मिला, तो True लौटाएं
पायथन कार्यान्वयन
def is_palindrome(s):
return s == s[::-1]
def solve(s):
for i in range(len(s)):
temp = ""
for j in range(i, len(s)):
temp += s[j]
if len(temp) % 2 == 0 and is_palindrome(temp):
return False
return True
s = "levelopmadam"
print(solve(s)) # True
इनपुट
"levelopmadam"
आउटपुट
True
नोट:
यह O(n³) समाधान है। बड़े स्ट्रिंग्स के लिए मैनाचर एल्गोरिदम या डायनामिक प्रोग्रामिंग का उपयोग करके O(n²) या O(n) में अनुकूलित किया जा सकता है।