給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明:本題中,我們將空字串定義為有效的回文串。
示例 1:
輸入: 「a man, a plan, a canal: panama」
輸出: true
示例 2:
輸入: 「race a car」
輸出: false
#最直觀的思路
定義兩個指標分別從字串的首端和末端開始向中間移動,
並對比首末的字元是否一樣,
若發現不一樣則肯定不為回文串,直接返回false
需要注意的是:利用python中的isalnum函式來判斷字元是否為數字或字母,
如果不是,則需要改變位置進行重新判斷
其次,再判斷是否為數字或字母時需要加上 left(self, s: str) -> bool:
left, right = 0, len(s) - 1
while left < right:
while left < right and not s[left].isalnum(
): left += 1
while left < right and not s[right].isalnum(
): right -= 1
if s[left].lower(
)!= s[right].lower(
): return false
left += 1
right -= 1
return true#簡潔的寫法
class solution:
def ispalindrome(self, s: str) -> bool:
str1 =
"".join(i.lower(
)for i in s if i.isalnum(
))# print(str1)
return str1 == str1[::-1]
leetcode刷題 125 驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 思路 先用replaceall ...
LeetCode刷題筆記 125 驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 設定兩個指標i和j,i從頭遍歷到...
Evan的LeetCode刷題之路
二 資料庫 以此記錄本人的leetcode刷題之路。題目內容均 於leetcode 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。示例 給定 nums 2...