isLetterOrDigit和isLetter()的用法
isLetterOrDigit(shar c)判断字符是不是字母或者数字;
isLetter(char c) 判断字符是不是数字;
isDigit(char c) 判断字符是不是字母;
思路就是用首尾判断的方式,循环首尾字符串。
public boolean isPalindrome(String s) {
if (s.equals("")) { return true; } int a = 0; int b = s.length() - 1; while (a < b) { char c = s.charAt(a); char c1 = s.charAt(b); if (!Character.isLetterOrDigit(c)) { a++; continue; } if (!Character.isLetterOrDigit(c1)) { b--; continue; } if (Character.toLowerCase(c) != Character.toLowerCase(c1)) { return false; } a++; b--; } return true; } 先定义字符串的头尾a,b 并赋值。再用Character提供的api进行判断,首尾分别判断,isLetterOrDigit(char c)获取到返回值,返回值有两种,字符串或者数字,如果不是这两种就会进入if()中,执行下一个字符的判断,首尾方式相同。一旦发现首位与末位有不相同的字符,就直接返回false,结束程序。否则进入循环,直到while循环条件不满足时退出循环,说明首尾对比完成,此字符串为回文串,返回true,结束程序。----解决想法来源于同事,觉得思路很好,记录一下。