LeetCode-125. 驗證迴文串
阿新 • • 發佈:2018-12-11
題目
給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。
**說明:**本題中,我們將空字串定義為有效的迴文串。
示例 1:
輸入: "A man, a plan, a canal: Panama"
輸出: true
示例 2:
輸入: "race a car"
輸出: false
解題
- 典型的雙指標問題, 程式碼如下:
class Solution {
public boolean isPalindrome(String s) {
if (null == s || "".equals (s)) {
return true;
}
char[] chars = s.toLowerCase().toCharArray();
int left = 0, right = chars.length - 1;
// left == right的情況, 表示除了最中間的一個字元之外, 其他的滿足迴文串情況
while(left<right){
if (!isNumOrChar(chars[left])) {
left++;
continue;
}
if (!isNumOrChar(chars[right])) {
right--;
continue;
}
if (chars[left] == chars[right]) {
left++;
right--;
} else {
return false;
}
}
return true;
}
// 判斷字串是否為數字和字母
private boolean isNumOrChar(char c){
if(c >= '0' && c <= '9'){
return true;
}
if(c >= 'a' && c <= 'z'){
return true;
}
return false;
}
}