题目描述: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.
分析:给定一个字符串,判断是不是回文,只考虑字母数字字符,并不顾大小写和标点。另外,空串被认为是有效的回文。
解题思路:只考虑字符串中的字母和数字(alphanumeric),并且忽视大小写。在得到字符串之后需要进行预处理,预处理后通过逆置来判断是否是回文字符串。
public boolean isPalindrome(String s){
char[] cArr = s.toCharArray();
StringBuilder sb = new StringBuilder();
//将字符串预处理并保存在sb中
for(int i=0;i<cArr.length;i++){
if(cArr[i]>='A'&&cArr[i]<='Z'||cArr[i]>='a'&&cArr[i]<='z'||cArr[i]>='0'&&cArr[i]<='9'){
String tempStr = String.valueOf(cArr[i]).toLowerCase();
sb.append(tempStr);
}
}
String str = sb.toString();
String reverseStr = sb.reverse().toString();
if(reverseStr.equals(str)){
return true;
}else{
return false;
}
}