মান লিজিয়ে দুটি স্ট্রিং আছে 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)]জোড়া দুটির জন্য:i := 0, j := len(x) - 1x[i] == y[j] and i < len(x) and j > 0থাকা পর্যন্ত:i += 1, j -= 1midx := 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