题目描述:
方法(双指针):
代码一:
class Solution {
public boolean isPalindrome(String s) {
if(s == null){
return true;
}
int len = s.length();
StringBuffer sb = new StringBuffer();
for(char c : s.toCharArray()){
if(Character.isLetterOrDigit(c)){
sb.append(c);
}
}
int i = 0,j = sb.length()-1;
while(i<j){
if(Character.toLowerCase(sb.charAt(i)) != Character.toLowerCase(sb.charAt(j))){
return false;
}
i++;
j--;
}
return true;
}
}
结果;
代码二(优化,能少使用API就少使用,虽然代码简洁了很多,但是耗时一般都挺大的):
class Solution {
public boolean isPalindrome(String s) {
if(s == null){
return true;
}
String str = s.toLowerCase();
char[] ch = str.toCharArray();
int i = 0,j = ch.length - 1;
while(i < j){
if(ch[i]<'0'||(ch[i]>'9' && ch[i]<'a')||ch[i]>'z'){
i++;
continue;
}
if(ch[j]<'0'||(ch[j]>'9' && ch[j]<'a')||ch[j]>'z'){
j--;
continue;
}
if(ch[i] == ch[j]){
i++;
j--;
}else{
return false;
}
}
return true;
}
}
结果: