题目描述
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) {
if (s.length() == 0) {
return true;
}
String lower = s.toLowerCase();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lower.length(); i++) {
char temp = lower.charAt(i);
if ((temp <= 'z' && temp >= 'a') || (temp <= '9' && temp >= '0') ) {
sb.append(temp);
}
}
if (sb.length() == 0) {
return true;
}
int i = 0, j = sb.length() - 1 ;
while (i < j) {
if (sb.charAt(i) != sb.charAt(j)) {
return false;
}
i++;
j--;
}
return true;
}
}