मान लीजिए हमारे पास समान लंबाई की दो स्ट्रिंग्स S और T हैं, हमें जांचना है कि क्या दोनों स्ट्रिंग्स को एक सामान्य बिंदु पर काटना संभव है ताकि S का पहला भाग और T का दूसरा भाग मिलकर एक पैलिंड्रोम बनाएं।
उदाहरण के लिए, यदि इनपुट S = "cat", T = "pac" है, तो आउटपुट True होगा, क्योंकि यदि हम स्ट्रिंग्स को "c" + "at" और "d" + "ac" में काटते हैं, तो "c" + "ac" एक पैलिंड्रोम है।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- n := a का आकार
- i := 0
- जब तक i < n और a[i], b[n-i-1] के बराबर है, करें:
- i := i + 1
- सत्य वापस करें यदि a[i:n-i] पैलिंड्रोम है या b[i:n-i] पैलिंड्रोम है
उदाहरण
class Solution:
def solve(self, a, b):
n = len(a)
i = 0
while i < n and a[i] == b[-i-1]:
i += 1
palindrome = lambda s: s == s[::-1]
return palindrome(a[i:n-i]) or palindrome(b[i:n-i])
ob = Solution()
S = "cat"
T = "dac"
print(ob.solve(S, T))
इनपुट
"cat","dac"
आउटपुट
True