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

Palindrome ที่ถูกต้องใน Python

สมมติว่าเรามีสตริงที่มีค่าอักษรตัวเลขและสัญลักษณ์ มีตัวพิมพ์เล็กและพิมพ์ใหญ่ เราต้องตรวจสอบว่าสตริงเป็น palindrome หรือไม่ โดยพิจารณาเฉพาะตัวพิมพ์เล็ก (ตัวพิมพ์ใหญ่จะแปลงเป็นพิมพ์เล็ก) สัญลักษณ์อื่นๆ เช่น คอมมา ช่องว่างจะถูกเพิกเฉย

สมมติสตริงเป็น "A Man, a Plan, a Canal: Panama" ตามกฎเหล่านี้จะกลายเป็น "amanaplanacanalpanama" ซึ่งเป็น palindrome

วิธีการแก้ปัญหา

  • กำหนด x = ""
  • อ่านแต่ละตัวอักษร c ใน str:
    • ถ้า c เป็นตัวพิมพ์เล็กหรือตัวเลข ให้ต่อ c เข้า x
    • มิฉะนั้น c เป็นตัวพิมพ์ใหญ่ ให้แปลงเป็นพิมพ์เล็กและต่อเข้า x
  • ถ้า x เป็น palindrome ให้คืนค่า True มิฉะนั้น False

ตัวอย่าง

class Solution(object):
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        x = ""
        diff = ord('a') - ord('A')
        for i in s:
            if ord(i) >= ord('a') and ord(i) <= ord('z') or ord(i) >= ord("0") and ord(i) <= ord("9"):
                x += i
            elif ord(i) >= ord('A') and ord(i) <= ord('Z'):
                i = chr(diff + ord(i))
                x += i
        return x == x[::-1]

ob1 = Solution()
print(ob1.isPalindrome("A Man, a Plan, a Canal: Panama"))

อินพุต

s = "A Man, a Plan, a Canal: Panama"

เอาต์พุต

true