给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
输入: "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串
class Solution {
public boolean isPalindrome(String s) {
if (null == s) {
return false;
}
if (s.length() == 0) {
return true;
}
s = s.replaceAll("[^a-zA-Z0-9]", "");
String reverse = String.valueOf(new StringBuilder(s).reverse());
return s.equalsIgnoreCase(reverse);
}
}
Java的话还是比较简单的,有现成的api可用,一个是利用正则提取字母+数字,再利用StringBuilder的反转字符串和原字符串比较,过滤好的字符串如果是回文字符串怎么反转都和本身一样,大小写只要利用equalsIgnoreCase()
方法即可。