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; };