题目描述
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。
示例 1:
输入: s = "A man, a plan, a canal: Panama" 输出:true 解释:"amanaplanacanalpanama" 是回文串。 示例 2:
输入:s = "race a car" 输出:false 解释:"raceacar" 不是回文串。 示例 3:
输入:s = " " 输出:true 解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。 由于空字符串正着反着读都一样,所以是回文串。
解析
第一步:将代码过滤 第二步:首尾比较
代码
class Solution {
public boolean isPalindrome(String s) {
char[] crr=new char[s.length()];
int n=0;
for (int i = 0; i < crr.length; i++) {
char c=s.charAt(i);
if(c<='Z'&&c>='A'){
crr[n]=Character.toLowerCase(c);
n++;
}else if(c<='z'&&c>='a'){
crr[n]=c;
n++;
}else if(c<='9'&&c>='0'){
crr[n]=c;
n++;
}
}
for (int i = 0,j=n-1; i < j; i++,j--) {
if(crr[i]!=crr[j]){
return false;
}
}
return true;
}
}