整数反转

整数反转

CategoryDifficultyLikesDislikes
algorithmsEasy (33.66%)1720-

Tags

math

Companies

apple | bloomberg

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例  1:

1
2
输入: 123
输出: 321

**  示例 2:**

1
2
输入: -123
输出: -321

示例 3:

1
2
输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为  [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。


Discussion | Solution

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// @lc code=start
impl Solution {
    /// ## 解题思路
    pub fn reverse(x: i32) -> i32 {
        let mut res: i32 = 0;
        let mut cur: i32 = x;
        while cur != 0 {
            match res.checked_mul(10) {
                None => return 0,
                Some(tmp) => match tmp.checked_add(cur % 10) {
                    None => return 0,
                    Some(fine) => {
                        res = fine;
                    }
                },
            }
            cur = cur / 10;
        }

        res
    }
}
// @lc code=end

struct Solution;

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test() {
        assert_eq!(Solution::reverse(123), 321);
        assert_eq!(Solution::reverse(-123), -321);
        assert_eq!(Solution::reverse(120), 21);
        assert_eq!(Solution::reverse(0), 0);
    }
}

updatedupdated2024-11-232024-11-23