125. 验证回文串
题目:如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
字母和数字都属于字母数字字符。
给你一个字符串 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 是一个空字符串 “” 。
由于空字符串正着反着读都一样,所以是回文串。
提示:
- 1 <= s.length <= 2 * 10^5
- s 仅由可打印的 ASCII 字符组成
代码如下:
class Solution {
public boolean isPalindrome(String s) {
int len = s.length();
int [] temp = new int [len];
int count = 0;
for(int i = 0; i < len; i ++){
if(s.charAt(i)-'a' >= 0 && s.charAt(i)-'a' < 26){//小写字母
temp[count] = s.charAt(i);
count ++;
}
if(s.charAt(i)-'A' >= 0 && s.charAt(i)-'A' < 26){//大写字母转小写字母
temp[count] = s.charAt(i) + 32;
count ++;
}
if(s.charAt(i)-'0' >= 0 && s.charAt(i)-'0' <= 9){//数字
temp[count] = s.charAt(i) -'0';
count ++;
}
}
for(int i = 0; i < count/2; i ++){
if(temp[i] != temp[count-i-1])
return false;
}
return true;
}
}
运行结果: