public class IsPalindrome {
public static void main(String[] args) {
String s = "A man, a plan, a canal: Panama";
System.out.println(isPalindrome(s));
}
public static boolean isPalindrome(String s) {
String reverse = "";
if(s == "")
return true;
//一般处理办法
//s = s.replaceAll(",", "").replaceAll(":", "").replaceAll(" ", "");
//正则表达式处理办法
s = s.replaceAll("[\\p{Punct}\\p{Space}]+", "");
System.out.println("用正则表达式去标点符号后的字符串: " + s);
s = s.toLowerCase();
System.out.println("处理好的原始字符串: " + s);
for(int j = s.length()-1;j >= 0;j--) {
reverse += s.charAt(j);
//System.out.println("reverse = " + reverse);
}
System.out.println("倒序的字符串: " + reverse);
for(int i = 0;i<s.length();i++) {
if(s.charAt(i) != reverse.charAt(i))
return false;
}
return true;
}
}
输出结果如下
用正则表达式去标点符号后的字符串: AmanaplanacanalPanama
处理好的原始字符串: amanaplanacanalpanama
倒序的字符串: amanaplanacanalpanama
true