Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบสตริงสองส่วนคือ palindrome หรือไม่ใน Python


สมมติว่าเรามีสาย 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