給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義爲有效的迴文串。
示例 1:
輸入: “A man, a plan, a canal: Panama”
輸出: true
示例 2:
輸入: “race a car”
輸出: false
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-palindrome
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
使用isalnum()函數過濾出字母和數字
解法1:
class Solution:
def isPalindrome(self, s: str) -> bool:
# data = list(filter(lambda x: x.isalnum(), s))
# data = [str(i).lower() for i in data]
data = list(filter(lambda x:x.isalnum(), s.lower()))
# if data == data[::-1]:
# return True
# else:
# return False
return data == data[::-1]
解法2:
class Solution:
def isPalindrome(self, s: str) -> bool:
data = list(filter(lambda x:x.isalnum(), s.lower()))
low, high = 0, len(data) - 1
while low < high:
if data[low] != data[high]:
return False
else:
low += 1
high -=1
return True