普通题。需要注意的是反转时的溢出。还有正负符号。(居然我没有特别加正负的判断也过了... 想了一下才发现根据我的代码负数的时候都会抛Exception,歪打正着。)
public class Solution { public boolean isPalindrome(int x) { // Start typing your Java solution below // DO NOT write main() function try { int r = reverse(x); if (r == x) { return true; } else { return false; } } catch (RuntimeException ex) { return false; } } private int reverse(int x) { int ans = 0; while( x > 0) { int d = x - x / 10 * 10; x = x / 10; if (Integer.MAX_VALUE / 10 < ans || Integer.MAX_VALUE - d < ans * 10) { throw new RuntimeException(); } ans = ans * 10 + d; } return ans; } }
另一种做法似乎更好就是取最左边一个数和最右边的数比较,然后去掉左右边。相比我的做法更好之处是无需考虑溢出。
参见:http://www.cnblogs.com/remlostime/archive/2012/11/13/2767676.html