这题的话,我的思路先是全部转换成小写,然后用正则表达式过滤非字母数字,然后发现了中文的逗号是两个字节?用正则表达式过滤后在字符串数组中会出现空格。 于是用if判断非空格再进行拼接。
时间用了29ms。。在10%处,别人3ms就好了。
----------------------------------------------------------------------------------------------------------------
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
class Solution {
public boolean isPalindrome(String s) {
if(s == null || s.length() == 0) return true;
s = s.toLowerCase();
String[] zheng = s.split("[^a-z0-9]");
StringBuilder zhengs = new StringBuilder();
for (String sb : zheng) {
if (sb != " ") {
zhengs.append(sb);
}
}
StringBuilder fan = new StringBuilder();
fan=zhengs.reverse();
String fans=fan.toString();
zhengs.reverse();
return (zhengs.toString()).equals(fans);
}
}