参考代码:
class Solution {
public boolean isPalindrome(String s) {
char[] w=s.toCharArray();
int i=0;int j=w.length-1;
for(int k=0;k<w.length;k++){
if(w[k]>='A'&&w[k]<='Z'){
w[k]=(char)(w[k]-'A'+'a');
}
}
while(i<j){
if((w[i]>='a'&&w[i]<='z')||(w[i]>='0'&&w[i]<='9')){
if((w[j]>='a'&&w[j]<='z')||(w[j]>='0'&&w[j]<='9')){
if(w[i]!=w[j]){
return false;
}
i++;j--;
}else{
j--;
}
}else{
i++;
}
}
return true;
}
}
采取双指针解法:
toCharArray()的用法:将字符串对象中的字符转换为一个字符数组。
先将大写字母全部换成小写字母,然后在i<j的情况下,判断w[]是否是小写字母或者数字。
如果左右指针所指 的内容均符合要求,则判断他们是否相等,若不等则返回false,并且左右指针均向前进一位,即i++,j--;
若左指针所指内容不是小写字母或者数字,则左指针向右移一位,即i++;
若右指针所指内容不是小写字母或者数字,则右指针向左移一位,即j++;
循环完毕,若所有都相等,则返回ture。