給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫
說明:本題中,我們將空字串定義為有效的回文串;
1.先將字串變為小寫,因為本題忽略了字母的大小寫。
2.利用字元的ascii值進行驗證
3.採用雙指標的辦法,乙個指向頭,乙個指向尾,同時向中間靠攏,過程中兩指標指向目標不相等則退出返回false,直到兩個指標匯合,則驗證成功,即是回文串。
解法一(未優化)
/**
* * 給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫
* 說明:本題中,我們將空字串定義為有效的回文串;
* 示例1.
* 輸入: "a man,a plan,a canal:panama"
* 輸出:true
* 示例2.
* 輸入:"race a car"
* 輸出:false
* * @author mac
* */
public
class
solution
while
((int)strarray[j]
<
48||
((int)strarray[j]
>
57&&
(int)strarray[j]
<97)
||(int)strarray[j]
>
122)
if(strarray[i]
!= strarray[j]
)else
}return
true;}
public
static
void
main
(string[
] args)
}
這裡會有乙個問題,如果字串是空的,或者超級長,就會產生錯誤,所以我們可以進行優化
解法二
class
solutionif(
!((edchar >=
'a'&& edchar <=
'z')
||(edchar >=
'0'&& edchar <=
'9')))
if(bgchar != edchar)
start++
; end--;}
return
true;}
public
static
void
main
(string[
] args)
}
注意這裡的判斷不能用while。 LeetCode 驗證回文字串
給定乙個非空字串s,最多刪除乙個字元。判斷是否能成為回文字串。示例 1 輸入 aba 輸出 true 示例 2 輸入 abca 輸出 true 解釋 你可以刪除c字元。注意 字串只包含從 a z 的小寫字母。字串的最大長度是50000。思路 雙指標 當不相等的時候 左指標跳過乙個或者右指標跳過乙個 ...
驗證回文字串 leetcode
給定乙個字串,驗證它是否是回文串,只考慮字母和數字字元,可以忽略字母的大小寫。說明 本題中,我們將空字串定義為有效的回文串。示例 1 輸入 a man,a plan,a canal panama 輸出 true 示例 2 輸入 race a car 輸出 false c 版本 class solut...
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...