Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"
is a palindrome.
"race a car"
is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
题意:给出一个字符中,只考虑数字和字符,忽略大小写,判断是不是回文串
思路:只保留数字,字符,并将字符转换成小写,然后反转与原来的字符串比较
public class Solution {
public boolean isPalindrome(String s) {
StringBuilder sb = new StringBuilder(s.length());
for (int i = 0, len = s.length(); i < len; i++) {
char ch = s.charAt(i);
if (Character.isLetterOrDigit(ch)) {
sb.append(Character.toLowerCase(ch));
}
}
String tmp = sb.toString();
return tmp.compareTo(sb.reverse().toString()) == 0;
}
}