0009 - Palindrome Number
description
Given an integer x
, return true
if x
is a palindrome, and false
otherwise.
Example 1:
Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left.
Example 2:
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.
Example 3:
Input: x = 10 Output: false Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Constraints:
-231 <= x <= 231 - 1
Follow up: Could you solve it without converting the integer to a string? ---
submission
impl Solution {
pub fn is_palindrome(x: i32) -> bool {
let mut reverse = 0;
let mut tmp = x;
// if x is negative, it is not palindrome
if x < 0 {
return false;
}
// construct a reversed number
while tmp > 0 {
reverse = reverse * 10 + tmp % 10;
tmp /= 10;
}
// by definition
reverse == x
}
}