मान लीजिए हमारे पास दो स्ट्रिंग्स a और b हैं जिनकी लंबाई समान है। हमें एक इंडेक्स चुनना है और दोनों स्ट्रिंग्स को उस चुने हुए इंडेक्स पर विभाजित करना है, a को दो स्ट्रिंग्स में विभाजित करना: a_pref और a_suff जहां a = a_pref + a_suff, और b को दो स्ट्रिंग्स में विभाजित करना: b_pref + b_suff जहां b = b_pref + b_suff (| कन्केटनेशन ऑपरेटर है)। जांचें कि a_pref + b_suff या b_pref + a_suff एक पालिंड्रोम बनाता है या नहीं। (कोई भी विभाजन एक खाली स्ट्रिंग हो सकती है)
उदाहरण के लिए, यदि इनपुट है a = "pqrst", b = "turqp", तो आउटपुट True होगा क्योंकि हम a को ["pq", "rst"] और b को ["tu", "rqp"] की तरह विभाजित कर सकते हैं, तो यदि हम a_pref को b_suff के साथ जोड़ते हैं, तो हमें "pqrqp" मिलेगा जो एक पालिंड्रोम है।
समाधान के चरण
[(a,b), (b,a)]सूची से प्रत्येक जोड़ी(x,y)के लिए:i := 0,j := len(x) - 1while x[i] == y[j] and i < len(x) and j > 0:i := i + 1j := j - 1
midx := x[i:j+1]midy := y[i:j+1]- यदि
midxपालिंड्रोम है याmidyपालिंड्रोम है:Trueवापस करें
Falseवापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(a, b):
for x, y in [[a, b], [b, a]]:
i, j = 0, len(x) - 1
while x[i] == y[j] and i < len(x) and j > 0:
i += 1
j -= 1
midx = x[i:j+1]
midy = y[i:j+1]
if (midx == midx[::-1] or midy == midy[::-1]):
return True
return False
a = "pqrst"
b = "turqp"
print(solve(a, b))
इनपुट
"pqrst", "turqp"
आउटपुट
True