python驗證回文字串

2021-10-13 12:48:23 字數 2374 閱讀 9830

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

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

示例 1:

輸入: 「a man, a plan, a canal: panama」 輸出: true 示例 2:

輸入: 「race a car」 輸出: false

首先將字串轉成小寫,之後提取出字串中的數字和字母。比較前半段和後半段內容是否相等。

# -*- coding: utf-8 -*-

'''題目簡述:

給定乙個字串,驗證其是否是回文串。僅考慮字母和數字。

基本思路:

首先將字串中中所有元素轉成小寫,然後提取出數字和字母。

在結合python切片比較前後兩半段是否相等。

'''class

solution()

:def

isstring

(self,s):if

len(s)

<2:

return

true

s = s.lower(

)# 轉成小寫

slist =

for word in s:

if word.isalnum():

# 若是小寫or字母

mid =

len(slist)//2

if slist[

:mid]

== slist[::

-1][

:mid]

:return

true

return

false

if __name__ ==

'__main__'

: s =

'aba'

solu = solution(

) res = solu.isstring(s)

print

('結果為\n'

,res)

建立前後兩個指標,比較兩個指標對應的元素是否相等。直至比較兩個指標相遇。

# -*- coding: utf-8 -*-

'''題目簡述:

給定乙個字串,驗證其是否是回文串。僅考慮字母和數字。

基本思路:

設定兩個指標,比較元素是否相等,直至兩個指標碰頭。

'''class

solution()

:def

isstring

(self,s):if

len(s)

<2:

return

true

s = s.lower(

)

left =

0 right =

len(s)-1

# 開始比較

while left < right:

ifnot s[left]

.isalnum():

# 若不是字母或數字

left+=

1continue

ifnot s[right]

.isalnum():

right-=

1continue

if s[left]

.isalnum(

)and s[right]

.isalnum():

if s[left]

!= s[right]

:return

false

else

: left+=

1 right-=

1return

true

if __name__ ==

'__main__'

: s =

"a man, a plan, a canal: panama"

solu = solution(

) res = solu.isstring(s)

print

('結果為\n'

,res)

a. 方法一中 : 驗證乙個字元是否是 數字or字母: 呼叫現成api。word.isalnum(); 另外,比較前後兩半段是否相等。主要是後半段的處理很巧妙。先將字串倒序然後比較前mid個元素。這樣保證了前後兩半段待比較元素數量相同。而不會因為字串中字母的奇數偶數數量而出差。

b. 不論法一還是法二: 均存在乙個細節。即s = s.lower(),僅僅在程式中s.lower()並不會改變原始字串。實質上開闢了一塊新記憶體。因此,必須賦值給s。否則不起作用。

680 驗證回文字串 (Python)

給定乙個非空字串 s,最多刪除乙個字元。判斷是否能成為回文字串。示例 1 輸入 aba 輸出 true 示例 2 輸入 abca 輸出 true 解釋 你可以刪除c字元。思路 首先兩個指標,l,r分別是從前開始和從後開始。如果s l s r 的時候,我們需要刪除掉乙個字元,就有兩種情況。一種是刪除左...

leetcode 驗證回文字串 python3

方案一 一般方法 分奇數偶數來說,方法比較一般 import string 給join傳遞入參時計算符合條件的字元,去掉標點符號 b join c for c in s if c not in string.punctuation 把空格去掉 b b.replace 小寫b b.lower l le...

驗證回文字串

描述 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。解法 字串中可能含有其他的字元,我們從字串的兩頭開始索引,如果左邊的字元不是字母或者數字字元,那麼讓左邊先走一步,同理右邊的也一樣。如果兩邊字元相同,那麼左邊和右邊同時走...