สมมติว่าเรามีสาย S และ T สองสายที่มีความยาวเท่ากัน เราต้องตรวจสอบว่าเป็นไปได้หรือไม่ที่จะตัดทั้งสองสายที่จุดร่วมเพื่อให้ส่วนแรกของ S และส่วนที่สองของ T ก่อตัวเป็นพาลินโดรม
ดังนั้น หากอินพุตเป็น S ="cat" T ="pac" ผลลัพธ์จะเป็น True เช่น หากเราตัดสตริงเป็น "c" + "at" และ "d" + "ac" แล้ว " c" + "ac" เป็นพาลินโดรม
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ a
-
ผม :=0
-
ในขณะที่ i
-
ผม :=ผม + 1
-
-
คืนค่าเป็นจริงเมื่อ a[จากดัชนี i ถึง n-i-1] คือ palindrome หรือ b[จากดัชนี i ถึง n-i-1] คือ palindrome
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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