publicbooleanisPalindrome(String s){if(s ==null|| s.length()==0){returntrue;}
s = s.toLowerCase();int left =0;int right = s.length()-1;while(left < right){while(left < right &&isAlphaNumeric(s.charAt(left))){
left++;}while(left < right &&isAlphaNumeric(s.charAt(right))){
right--;}if(s.charAt(left)!= s.charAt(right)){returnfalse;}
left++;
right--;}returntrue;}privatebooleanisAlphaNumeric(char c){return(c <'a'|| c >'z')&&(c <'0'|| c >'9');}
先将字符串里没吊用的符号过滤掉,然后翻转比较是不是相同,即可判断回文串。 代码如下:
publicbooleanisPalindrome2(String s){if(s ==null|| s.length()==0){returntrue;}// 这里的builder是idea提示要求用的,相对StringBuffer线程安全但是性能相对偏低。StringBuilder str =newStringBuilder();for(int i =0; i < s.length(); i++){if(Character.isLetterOrDigit(s.charAt(i))){
str.append(Character.toLowerCase(s.charAt(i)));}}// 深拷贝StringBuffer sb =newStringBuffer(str.toString()).reverse();return str.toString().equals(sb.toString());}