给出一个 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 }

【leetcode】# 7 整数翻转 Rust Solution的更多相关文章

  1. 整数翻转C++实现 java实现 leetcode系列(七)

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...

  2. LeetCode刷题:第七题 整数翻转 第九题 回文数

    第七题题目描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入 ...

  3. Leetcode 7. 整数反转(待整理)

    1.题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出: -321 示例 3: 输入: ...

  4. LeetCode:整数转罗马数字【12】

    LeetCode:整数转罗马数字[12] 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 10 ...

  5. 前端与算法 leetcode 7. 整数反转

    目录 # 前端与算法 leetcode 7. 整数反转 题目描述 概要 提示 解析 解法 算法 传入测试用例的运行结果 执行结果 GitHub仓库 # 前端与算法 leetcode 7. 整数反转 题 ...

  6. java实现整数翻转

    ** 整数翻转** 以下程序把一个整数翻转(8765变为:5678),请补充缺少的代码. int n = 8765; int m = 0; while(n>0) { m = __________ ...

  7. [LeetCode] Reverse Integer 翻转整数

    Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 click to ...

  8. [LeetCode] Reverse String 翻转字符串

    Write a function that takes a string as input and returns the string reversed. Example: Given s = &q ...

  9. [LeetCode] Flip Game 翻转游戏

    You are playing the following Flip Game with your friend: Given a string that contains only these tw ...

  10. LeetCode 343. 整数拆分(Integer Break) 25

    343. 整数拆分 343. Integer Break 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 每日一算法2019/5/2 ...

随机推荐

  1. 解决class path resource [applicationContext.xml] cannot be opened because it does not exist

    在学习spring的过程出现class path resource [applicationContext.xml] cannot be opened because it does not exis ...

  2. .net core基于HttpClient实现的网络请求库

    Soda.Http 基于HttpClient封装的 Http 请求库.如果有什么好想法,可以提 Issue 或者 Pr.,如果想要使用,直接在nuget搜索Soda.Http即可. Github项目地 ...

  3. 建木在 Rainbond 上使用实践

    建木 是一个面向 DevOps 领域的极易扩展的开源无代码(图形化)/低代码(GitOps)工具,可以帮助用户轻松编排各种DevOps流程并分发到不同平台执行. 建木的图形化编排提供了多个节点,节点可 ...

  4. 使用二进制方式安装Docker

    长期使用安装工具进行安装docker,今天用二进制方式手动安装一下docker环境. 二进制包下载地址:https://download.docker.com/linux/static/stable/ ...

  5. [Java SE/JDK]Intellij IDEA中设置JDK版本

    1 Intellij IDEA 修改JDK版本 第1步:配置JDK环境变量 装好JDK之后,要添加一个环境变量:JAVA_HOME 第2步:修改Idea配置 由Maven决定的版本 <build ...

  6. day05-SpringCloud Eureka-服务注册与发现02

    SpringCloud Eureka-服务注册与发现02 3.搭建EurekaServer集群-实现负载均衡&故障容错 3.1为什么需要集群EurekaServer? 微服务RPC远程服务调用 ...

  7. Java代理之jdk动态代理+应用场景实战

    本文将先介绍jdk动态代理的基本用法,并对其原理和注意事项予以说明.之后将以两个最常见的应用场景为例,进行代码实操.这两个应用场景分别是拦截器和声明性接口,它们在许多开发框架中广泛使用.比如在spri ...

  8. Linux(四)软件包管理

    软件包管理 1 RPM 简介 RPM(RedHat Package Manager),是红帽系linux操作系统的软件包管理工具,类似于windows中的setup.exe能够进行软件包的更新.卸载. ...

  9. python函数参数与类参数

    python关于函数的一些应用 前言 鉴于python3与python2有些不同,看到某些代码时可能会感到疑惑,就稍微记录一下. 一.不限制个数的函数参数 1.*args 以此为参数,会被python ...

  10. 探索FSM (有限状态机)应用

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值.. 本文作者:木杪 有限状态机(FSM) 是计算机科学中的一种数学模型 ...