给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
原理分析:
主要使用s.split("[^a-z0-9]")解析出需要分析的字符串,别的没什么点,很简单
代码如下:
public static void main(String[] args) {
// String s = "A man, a plan, a canal: Panama".toLowerCase().replaceAll(",", "").replaceAll(" ", "").replaceAll(":", "");
// String rs = new StringBuilder(s).reverse().toString().toLowerCase().replaceAll(",", "").replaceAll(" ", "").replaceAll(":", "");
// System.out.println(s);
// System.out.println(rs);
// System.out.println(rs.equals(s));
String s = "A man, a plan, a canal: Panama";
s = "";
// s = s.toLowerCase();
// String[] ss = s.split("[^a-z0-9]");
// for(String t : ss){
// System.out.println(t);
// }
TestPalindrome test = new TestPalindrome();
System.out.println(test.isPalindrome(s));
}
public boolean isPalindrome(String s) {
if(null == s){
return false;
}
s=s.toLowerCase();
// if(!s.matches("[^a-z0-9]")){
// return false;
// }
String[] ss = s.split("[^a-z0-9]");
StringBuilder buffer = new StringBuilder();
for(String t : ss){
buffer.append(t);
}
s = buffer.toString();
String rs = buffer.reverse().toString();
// System.out.println(rs);
return rs.equals(s);
}