Monday, July 21, 2014

Palindrome Number

Determine whether an integer is a palindrome. Do this without extra space.

这种题其实有很多细节不明确,需要和面试官交流,比如如何判断负数。
直观解法是reverse integer,但是会遇到溢出的问题。
可以每次尝试求第一位和最后一位,进行比较。
public class Solution {
    //Time: O(n)
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        
        int bigdiv = 1;
        while (x / bigdiv >= 10) {
            bigdiv *= 10;
        }
        
        while (x > 0) {
            int left = x / bigdiv;
            int right = x % 10;
            if (left != right) {
                return false;
            }
            x = x % bigdiv;
            x = x / 10;
            bigdiv = bigdiv / (100);
        }
        return true;
    }
}

No comments:

Post a Comment