- Given an integer x, return true if x is a palindrome, and false otherwise.
Input: x = 121
Output: true
Explanation: 121 reads as 121 from left to right and from right to left.
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
- -231 <= x <= 231 - 1
Follow up:
- Could you solve it without converting the integer to a string?
Solution:
Java:
class Solution {
    public boolean isPalindrome(int x) {
        // if the number is a negative number
        // if the number end with 0 except the number zero
        if (x < 0 || (x != 0 && x % 10 == 0))
            return false;
        int reverse = 0;
        int num = x;
        while (num > reverse) {
            int lastDigit = num % 10;
            reverse = reverse * 10 + lastDigit;
            num = num / 10;
        }
        return num == reverse/10 || num == reverse;
    }
}
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if (x < 0 or (x != 0 and x % 10 == 0)):
            return False
        reverse = 0
        num = x
        while num > reverse:
            lastDigit = num % 10
            reverse = reverse * 10 + lastDigit
            num = num // 10
        return num == reverse//10 or num == reverse
No comments:
Post a Comment