判断回文数:1、负数肯定不是回文数。2、将整数一位一位拆解放入动态数组中。3、需要两个“指针”一个从头一个从尾开始比较动态数组中的元素是否相等。
class Solution {public static boolean isPalindrome(int x) {boolean ispld = true;if ( x<0 ) return false;ArrayList<Integer> array = new ArrayList<Integer>();while ( x>0 ) {int digit = x%10;x /= 10;array.add(digit);}for ( int i=0,j=array.size()-1; i<array.size()/2; i++,j--) {if ( array.get(i) != array.get(j)) {ispld = false;}}return ispld;}
}
解法2:1、将整数转换成字符串类型(具体说StringBuilder)。2、将字符串反转。3、比较两个字符串是否相等的。
class Solution{public boolean isPalindrome(int x){String s = Integer.toString(x);StringBuilder sb = new StringBuilder(s);StringBuilder rsb = sb.reverse();String rs = rsb.toString();return (s).equals(rs);}
}
注意事项:1、整数转字符串也可以用“”+x这个操作来完成(字符串连接的运用)。2、StringBuilder类型有reverse()方法。3、该方法很粗暴。
解法3:取整数首尾数字进行比较,如果不相等那么就不是回文。将整数更新为头尾去掉后的整数,继续比较。
class Solution { public boolean isPalindrome(int x) {if ( x<0 ) return false;int div = 1;while ( x/div>=10 ) {div *= 10;}while ( x>0 ) {if (x%10!=x/div) {return false;}x = (x%div)/10;div /= 100;}return true;}
}