判断一个int 型整数 是否为回文数
leetcode 上的题目
Determine whether an integer is a palindrome. Do this without extra space.
由于不能使用额外空间,所以不能把数字转化为字符串后进行比较。因为这样空间复杂度将为线性。
leetcode给出了几点提示
1.判断负数是否为回文数,查了下回文数定义,负数不为回文数
2.就是注意不能把数字转字符串,因为不能用额外空间。
3.如果打算反转数字,需要处理好数字溢出情况
我的解决办法:
先获取数字长度,然后获取最右边的数及最左边的数。
var isPalindrome = function(x) { if(x < 0){ return false; } if(x < 10){ return true; } var tmp =x; var len = 1; var n= 1; while ( ( tmp = parseInt(tmp/10))!= 0){ len *= 10; n ++ ; } n = parseInt(n/2); var left = x; var right = x; for(var i =0 ; i <= n; i ++){ var t = parseInt(left/len)%10; var r = right%10; if(t != r){ return false; } len /= 10; right = parseInt(right/10); } return true; };