zoukankan      html  css  js  c++  java
  • 【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 }
  • 相关阅读:
    【docker】win10安装docker教程
    【大数据】hive 删除临时文件 .hive-staging_hive
    【PostgreSql】生成数据字典
    【python3】基于scrapyd + scrapydweb 的可视化部署
    【python3】将视频转换为代码视频
    博客转移,永久退出博客园
    对dataframe中某一列进行计数
    解决mac上matplotlib中文无法显示问题
    在Jupyter notebook中使用特定虚拟环境中的python的kernel
    ubuntu18.04里更新系统源和pip源
  • 原文地址:https://www.cnblogs.com/Davirain/p/13544160.html
Copyright © 2011-2022 走看看