解題思路
使用雙指標,左指標向友移,右指標向左移,判斷移動到的字元是否是字母或數字,是就判斷是否相同,不是字母或數字則繼續移動;終止條件為兩指標相遇;
時間複雜度:o(|s|)o(∣s∣),其中 |s|∣s∣ 是字串 ss的長度。
空間複雜度:o(|s|)o(∣s∣)。由於我們需要將所有的字母和數字字元存放在另乙個字串中,在最壞情況下,新的字串與原字串完全相同,因此需要使用 o(|s|)o(∣s∣) 的空間。
**:
class
solution
(object):
defispalindrome
(self, s):if
len(s)
<2:
return
true
s=s.lower #全變小寫字母
left =
0 right =
len(s)-1
while right-left>0:
ifnot s[left]
.isalnum():
#判斷指標所指位置是否是字母或數字
left+=
1continue
ifnot s[right]
.isalnum():
right-=
1continue
if s[left]
==s[right]
: left+=
1 right-=
1else
:return
false
return
true
leetcode125 驗證回文串
一 問題描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false 二 和思路 2.分...
LeetCode125驗證回文數
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 falseclass solution def...
leetcode 125 驗證回文串
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true示例 2 輸入 race a car 輸出 false注意讀題,題目中說了只考慮字母和數字...