题目描述
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.
My solution(10ms,36.5MB)
整形转换成字符型,然后进行颠倒转换
class Solution { public boolean isPalindrome(int x) { if(x<0){ return false; }else{ String a = x + ""; String aReverse = new StringBuilder(a).reverse().toString(); if(a.equals(aReverse)){ return true; }else{return false;} } } }
Other solution(6ms,35.1MB):
这个方法很神奇啊!Ψ( ̄∀ ̄)Ψ
先排除负数,然后把整数分成两个部分,x为前一半,rev为后一半,例:32499423
并且rev还是已经倒转过后的数字,即3249
最后比较一下两个是否相同
如果是奇数个数字,例:12321
则rev为123,x为12
然后比较123/10=12和12是否相等
class Solution { public boolean isPalindrome(int x) { if (x<0 || (x!=0 && x%10==0)) return false; int rev = 0; while (x>rev){ rev = rev*10 + x%10; x = x/10; } return (x==rev || x==rev/10); } }