7. Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For this problem, assume that your function returns 0 when the reversed integer overflows.

 

Example 1:

Input: x = 123
Output: 321

Example 2:

Input: x = -123
Output: -321

Example 3:

Input: x = 120
Output: 21

Example 4:

Input: x = 0
Output: 0

 

Constraints:

  • -231 <= x <= 231 - 1

Rust Solution

struct Solution;

impl Solution {
    pub fn reverse(x: i32) -> i32 {
        let x_str = x.abs().to_string().chars().rev().collect::<String>();
        if let Ok(y) = x_str.parse::<i32>() {
            x.signum() * y
        } else {
            0
        }
    }
}

#[test]
fn test() {
    let x = 2_147_483_647;
    let res = 0;
    assert_eq!(Solution::reverse(x), res);
    let x = 123_456_789;
    let res = 987_654_321;
    assert_eq!(Solution::reverse(x), res);
    let x = -123;
    let res = -321;
    assert_eq!(Solution::reverse(x), res);
}

Having problems with this solution? Click here to submit an issue on github.