Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Input: 121 Output: true
Example 2:
Input: -121 Output: false Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
判断一个数是不是回文。核心:回文意味着对称,所以只要能验证这个数是不是对称的即可。
方法一:
public static boolean isPalindrome(int x) { if(x < 0) { return false; } if(x >= 0 && x < 10) { return true; } String str = x + ""; int preIndex = 0; int tailIndex = str.length() - 1; while(tailIndex >= preIndex) { //验证首尾指针指向的数字是否相等 if(str.charAt(tailIndex) != str.charAt(preIndex)) { return false; } tailIndex--; preIndex++; } return true; }
方法二:
public static boolean isPalindromeV2(int x){ if(x < 0) return false; if(x == 0) return true; if(x % 10 == 0) return false; int ret = 0; while (x > ret) { //反序重建x ret = ret * 10 + x % 10; if(ret != x) x /= 10; } return x == ret; }