Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
给定一个字符串,判定它是否是会问字符串,只考虑数字字母字符并且忽略大小写。
思路:将字符串中的所有非数字字母字符均去掉,组成新的字符,查看新的字符是否是回文字符
public boolean isPalindrome(String s) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i)<='z'&&s.charAt(i)>='a'){
sb.append(s.charAt(i));
}else if(s.charAt(i)<='9'&&s.charAt(i)>='0'){
sb.append(s.charAt(i));
}else if(s.charAt(i)<='Z'&&s.charAt(i)>='A'){
sb.append(s.charAt(i));
}
}
//return sb.reverse().toString().toLowerCase().equals(sb.toString().toLowerCase());
//原来是上面的写法,发现所有的情况都是返回true,原因是stringbuffer的reverse方法会取代原来的字符串
return sb.toString().toLowerCase().equals(sb.reverse().toString().toLowerCase());
}