給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。
說明:本題中,我們將空字符串定義爲有效的迴文串。
示例 1:
輸入: "A man, a plan, a canal: Panama" 輸出: true
示例 2:
輸入: "race a car" 輸出: false
思想:可以使用兩個指針,一個指針從第一個元素開始,一個指針從最後一個元素開始,期間進行判斷,如果這兩個指針所指向的元素不是數字字符或字母,則進行相應的++或--,如果所比較的兩個字符相等的話,也進行相應的++或--,最後字符數組比較完,如果全部相等,則返回true,否則返回false。
public static boolean isPalindrome(String s){
char[] ss=s.toCharArray();
int i=0;
int j=ss.length-1;
while(i<j){
if(!Character.isLetterOrDigit(ss[i])){
i++;
}
else if(!Character.isLetterOrDigit(ss[j])){
j--;
}
else if(Character.toLowerCase(ss[i])==Character.toLowerCase(ss[j])){
i++;
j--;
}
else{
return false;
}
}
return true;
}