LeetCode0125 驗證回文串

2021-10-07 09:07:13 字數 1303 閱讀 6539

一. 題目

題目給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。

說明:本題中,我們將空字串定義為有效的回文串。

示例

二. 方法一

解題思路

先去掉原字串中兩端的空格以及將其中的小寫字母轉成大寫字母

建立兩個指標, 分別指向整理後字串的頭尾

如果頭指標小於尾指標, 且頭指標所指元素不是字母或數字, 則索引 + 1

如果頭指標小於尾指標, 且尾指標所指元素不是字母或數字, 則索引 - 1

如果頭尾指標指向的元素都是數字或字母, 則比較元素是否相等

如果相等, 則繼續比較, 直到比較到頭指標不小於尾指標

如果不相等, 則直接返回false

最終返回true

解題**

def

ispalindrome

(self, s:

str)

->

bool

:# 先去掉原字串中兩端的空格以及將其中的小寫字母轉成大寫字母

s = s.strip(

).upper(

)# 建立兩個指標, 分別指向整理後字串的頭尾

left =

0 right =

len(s)-1

while right > left:

# 如果頭指標小於尾指標, 且當前元素不是字母或數字, 則跳過

while

not s[left]

.isalnum(

)and left < right:

left +=

1while

not s[right]

.isalnum(

)and left < right:

right -=

1# 此時頭尾元素均是字母或者數字

# 如果相等, 則繼續比較下一對元素; 如果不相等,則直接返回false

if s[left]

== s[right]

: left +=

1 right -=

1else

:return

false

# 如果執行到最後, 則返回true

else

:return

true

分析

時間複雜度: o(n)

空間複雜度: o(1)

LeetCode 驗證IP位址

ipv4 位址由十進位制數和點來表示,每個位址包含4個十進位制數,其範圍為 0 255,用 分割。比如,172.16.254.1 同時,ipv4 位址內的數不會以 0 開頭。比如,位址 172.16.254.01 是不合法的。ipv6 位址由8組16進製制的數字來表示,每組表示 16 位元。這些組數...

LeetCode 驗證回文串

題目描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false class solut...

LeetCode 驗證回文字串

給定乙個非空字串s,最多刪除乙個字元。判斷是否能成為回文字串。示例 1 輸入 aba 輸出 true 示例 2 輸入 abca 輸出 true 解釋 你可以刪除c字元。注意 字串只包含從 a z 的小寫字母。字串的最大長度是50000。思路 雙指標 當不相等的時候 左指標跳過乙個或者右指標跳過乙個 ...