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

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


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

สมมติว่าสตริงเป็นเหมือน "A Man, a Plan, a Canal:Panama" จากนั้นเมื่อพิจารณากฎเหล่านี้ก็จะเป็น "amanaplanacalpanama" นี่คือพาลินโดรม

เพื่อแก้ปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้ -

  • กำหนด x =“”
  • อ่านอักขระ c แต่ละตัวใน str −
    • ถ้า c เป็นอักษรตัวพิมพ์เล็กหรือตัวเลข ให้เติม c ลงใน x
    • หรือ c เป็นอักษรตัวพิมพ์ใหญ่ จากนั้นแปลงเป็นตัวพิมพ์เล็กและต่อท้าย x
  • ถ้า x เป็นพาลินโดรม ให้คืนค่า จริง ไม่เช่นนั้น เท็จ

ตัวอย่าง

ให้เราดูการนำไปใช้เพื่อความเข้าใจที่ดีขึ้น

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
      #print(s)
      #print(x)
      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