leetcode_rust/
palindrome_number.rs

1#![allow(dead_code)]
2
3pub fn is_palindrome(x: i32) -> bool {
4    if x < 0 || (x % 10 == 0 && x != 0) {
5        return false;
6    }
7
8    let mut x = x;
9    let mut reversed_num = 0;
10    // when x <= reversed_num, x's length is less than or equal to reversed_num's length
11    while x > reversed_num {
12        reversed_num *= 10;
13        reversed_num += x % 10;
14        x /= 10;
15    }
16
17    if x == reversed_num || x == reversed_num / 10 {
18        true
19    } else {
20        false
21    }
22}
23
24#[cfg(test)]
25mod tests {
26    use super::*;
27
28    #[test]
29    fn test1() {
30        assert_eq!(is_palindrome(121), true);
31        assert_eq!(is_palindrome(0), true);
32        assert_eq!(is_palindrome(10), false);
33        assert_eq!(is_palindrome(-121), false);
34    }
35}