Determine whether an integer is a palindrome. Do this without extra space. html
Could negative integers be palindromes? (ie, -1) java
If you are thinking of converting the integer to string, note the restriction of using extra space. git
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case? this
There is a more generic way of solving this problem. spa
思路1(不推薦):利用Reverse Integer的方法,求的轉換後的數字,而後比較是否相等。提示說這樣有溢出的問題,想了想感受問題不大,leetcode也過了。由於首先輸入必須是一個合法的int值,負數直接返回false,對於正數,假設輸入的int是一個palindrome,reverse以後依然不會溢出,因此正常返回true;因此若是轉換後溢出了,證實確定不是palindrome,溢出後的數字跟輸入通常不相同(想不出相等的狀況-_-!,求指點),因此返回了false。 rest
思路2:從兩頭依次取數字比較,向中間推動。 code
public class Solution { public boolean isPalindrome(int x) { if (x < 0) return false; //calcu the length of digit int len = 1; while (x / len >= 10) { len *= 10; } while (x != 0) { int left = x / len; int right = x % 10; if (left != right) return false; //remove the head and tail digit x = (x % len) / 10; len /= 100; } return true; } }
參考: htm
http://www.programcreek.com/2013/02/leetcode-palindrome-number-java/ blog
http://fisherlei.blogspot.com/2012/12/leetcode-palindrome-number.html leetcode