【leetcode】# 7 整数翻转 Rust Solution

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

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

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

Rust Solution:

 1 fn reverse(x: i32) -> i32 {
 2     let mut flag = false;
 3     let mut abs_x;
 4     if 0 < x {
 5         flag = true;
 6         abs_x = x;
 7     } else {
 8         abs_x = x.abs();
 9     }
10     // println!("abs_x = {}", abs_x);
11 
12     let mut result :i32 = 0;
13 
14     loop {
15         if abs_x / 10 == 0 && abs_x % 10 == 0 {
16             break;
17         } else {
18             let temp = abs_x % 10;
19             // println!("temp = {}", temp);
20             abs_x = abs_x / 10;
21             result += temp;
22 
23             if abs_x == 0 {
24                 result *= 1;
25             } else {
26                 //这里会发生溢出,如果发生溢出的话这个函数返回的是None
27                 // if let Some(value) = result.checked_mul(10) {
28                 //     result = value;
29                 //     // println!("result = {}", result);
30                 // } else { // 匹配不到值返回的是0
31                 //     return 0;
32                 // }
33 
34                 let ret = result.checked_mul(10);
35                 match ret {
36                     Some(value) => result = value,
37                     None => { return  0; },
38                 }
39             }
40         }
41     }
42 
43     if flag { // if flag true
44         // result = result;
45     } else { // if flag false
46         result *= -1;
47     }
48     result
49 }
50 
51 fn reverse_v2(x: i32) -> i32 {
52     // println!("{}", x.signum());
53     x.abs()
54         .to_string()
55         .chars().rev()
56         .collect::<String>()
57         .parse::<i32>()
58         .unwrap_or(0) * x.signum()
59 
60 }
61 fn main() {
62     // let x = 1534236469;
63     // let x = 123;
64     let x = -321;
65     // let x = 120;
66     let ret = reverse_v2(x);
67 
68     println!("x = {}, ret = {}", x, ret);
69     // println!("Hello, world!");
70 }
原文地址:https://www.cnblogs.com/Davirain/p/13544160.html