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

โปรแกรมตรวจสอบว่าสองส่วนของสตริงเป็นพาลินโดรมหรือไม่ใน Python

สมมติว่ามีสตริงสองตัว S และ T ความยาวเท่ากัน เราต้องตรวจสอบว่าสามารถตัดทั้งสองสตริงที่จุดเดียวกันได้หรือไม่ ทำให้ส่วนแรกของ S และส่วนที่สองของ T รวมกันเป็นพาลินโดรม

เช่น ถ้าอินพุตคือ S = "cat" T = "pac" ผลลัพธ์จะเป็น True เนื่องจากตัดเป็น "c"+"at" และ "d"+"ac" แล้ว "c"+"ac" เป็นพาลินโดรม

ขั้นตอนการแก้ปัญหา

  • n := ขนาดของ a
  • i := 0
  • while i < n และ a[i] เท่ากับ b[n-i-1] ทำ i := i + 1
  • คืนค่า true ถ้า 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