Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >leetcode - 整数反转

leetcode - 整数反转

作者头像
江涛学编程
发布于 2021-01-28 07:30:18
发布于 2021-01-28 07:30:18
36900
代码可运行
举报
文章被收录于专栏:江涛的博客江涛的博客
运行总次数:0
代码可运行

题意

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

注意:

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

示例

示例 1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:x = 123
输出:321

示例 2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:x = -123
输出:-321

示例 3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:x = 120
输出:21

示例 4:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
输入:x = 0
输出:0

提示:

  • -2^31 <= x <= 2^31 - 1

出处

链接:https://leetcode-cn.com/problems/reverse-integer

思路

这题假如是个小学一年级的期末考试题,我们大概会这么做,从右边往左边读然后依次写下来,如果读到最后一个是“-”减号,我们就把它放到写下数字的最前面。言下之意就是,我不要把它看成数字处理,我把它看成字符串,然后一翻转。这里考虑下带不带负号,假设带上吧,那你就要考虑最后那位是不是“-”了,如果不带吧,那你就要判断它原值是正数还是负数了。

这里需要注意的是在 Javascript 语言中,Number 类型的范围是[-2^53 - 1, 2^53 - 1],所以如果你转换成字符串处理,你是感受不到溢出的,需要去人肉判断一波,该值是否在题意给定的[−2^31, 2^31 − 1]区间。除此之外,Javascript 的字符串中并没有字符串反转的 API,但是有数组反转的 API,所以曲线救国,就先转成字符串然后转成数组反转再转回字符串。这个是完全根据 Javascript 语言特性和小学生思维的解法写的。

当然啦,你也可以按照数字去解题,如果原值不为 0,将原值对于 10 取其余数塞到新组成的字符串的后面,新的原值等于原值整除 10, 前提你还是要先判断有没有溢出,然后该值的正负性。然后如果该值不为 0,要去掉开头的 0, 如示例 3 所示.

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * @param {number} x
 * @return {number}
 */
const reverse = function(x) {
    const str = Math.abs(x).toString();
    const str_reverse = str.split('').reverse().join('');
    return x >= 0 ? Number(str_reverse) > Math.pow(2, 31) - 1 ? 0 : Number(str_reverse) : -Number(str_reverse) < Math.pow(-2, 31) ? 0 : -Number(str_reverse);
};

export default reverse;

测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import twoSum from '../../code/leetcode/7';

describe('test function reverse:', () => {

    test('test case x = 123', () => {
        const res = twoSum(123);
        expect(res).toBe(321);
    });

    test('test case x = -123', () => {
        const res = twoSum(-123);
        expect(res).toBe(-321);
    });

    test('test case x = 120', () => {
        const res = twoSum(120);
        expect(res).toBe(21);
    });

    test('test case x = 0', () => {
        const res = twoSum(0);
        expect(res).toBe(0);
    });

    test('test case x = 1534236469', () => {
        const res = twoSum(1534236469);
        expect(res).toBe(0);
    });
})

思考

  • 就上面提到的用数字取余数的解法,有兴趣的同学可以去试下
  • 题目中给出的区间具体值是多大2^31-1=2147483647,-2^31=-2147483648

参考

JS 的 Number 类型:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number

说明

本文首发于 GitHub 仓库https://github.com/ataola/coding,线上阅读地址:https://zhengjiangtao.cn/coding/,转载请注明出处,谢谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江涛学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
007. 整数反转 | Leetcode题解
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231, 231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
苏南
2020/12/16
4000
007. 整数反转 | Leetcode题解
每日一个小算法之整数中每位上的数字进行反转 20190810
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2的31次方,  2的31次方 − 1]。
凯哥Java
2019/08/10
4690
每日一个小算法之整数中每位上的数字进行反转 20190810
leetcode - 字符串转换整数 (atoi)
首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:
江涛学编程
2021/01/28
7330
【LeetCode13】整数反转
这道题主要考察的是数字反转以及边界处理,而我们可能对字符串的反转更加熟悉,所以我们可以先把数字转出字符串,主要思路如下:
Sam Gor
2019/07/08
4940
从0打卡leetcode之day8--反转整数
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
帅地
2018/08/30
5720
异名解题:7. 整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2³¹, 2³¹ − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
异名
2020/07/03
2910
leetcode-回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
江涛学编程
2021/01/28
5820
LeetCode-7 整数反转
今天我们学习第7题整数反转,这是个简单的数学题。下面我们看看这道题的题目描述。
用户3470542
2019/06/26
3960
LeetCode-7 整数反转
Leetcode No.7 整数反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
week
2020/08/17
3050
leetcode 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 :
河湾欢儿
2021/12/08
3240
每日一个小算法之整数中每位上的数字进行反转 20190810
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2的31次方,  2的31次方 − 1]。
凯哥Java
2022/12/15
3040
每日一个小算法之整数中每位上的数字进行反转 20190810
Python 版 LeetCode 刷题笔记 #7 整数反转
今天迎来了个简单难度的题目,在经历一番中等难度题目的洗礼后,情不自禁露出吊打小朋友的微笑,感觉今天可以多做几道。
TTTEED
2020/07/08
7510
leetcode-罗马数字转整数
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。27 写做 XXVII, 即为 XX + V + II 。
江涛学编程
2021/01/28
6350
7 整数反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
木瓜煲鸡脚
2021/01/18
3370
7 整数反转
LeetCode 7. 整数反转
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
freesan44
2020/02/25
4240
力扣刷题-02-简-整数翻转
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>力扣刷题-02-简-整数翻转</title> </head> <body> <p> 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转 </p> <p> 输入: 123 输出: 321 <br /> 输入: -123 输出: -321 <br /> 输入: 120 输出: 21 </p
我乃小神神
2020/12/01
3970
力扣刷题-02-简-整数翻转
python3整数反转
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
全栈程序员站长
2021/04/19
5780
leetcode: explore-strings-33 反转字符串
1、输入:一个整数,可正可负可为0 2、输出:输入值反转,但不包括符号,正数的前置0要省略 3、注意:输入与输出的数值范围都是[−2^31, 2^31 − 1],如果超出,返回0
用户7685359
2020/08/24
3310
leetcode: explore-strings-33 反转字符串
LeetCode-7.整数反转 取模反转法与字符串法
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 −2^31, 2^31 − 1。请根据这个假设,如果反转后整数溢出那么就返回 0。
扎克蕉
2020/09/18
8080
Leetcode PHP 整数反转
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
Meng小羽
2020/02/13
6030
相关推荐
007. 整数反转 | Leetcode题解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验