题目:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 12331
输出:321
示例 2:

输入:x = -123
输出:-321
示例 3:

输入:x = 120
输出:21
示例 4:

输入:x = 0
输出:0

提示:

-231 <= x <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

数学思维:

最大值与最小值:-231 =  -2147483648,231-1 = 2147483647

数学方法取末尾数字,以及将末尾数字推入反转数中:

//弹出x的末尾数字
digit = x % 10
x / = 10 //将数字digit推入rev末尾
rev = rev * 10 + digit

举例:

1.循环判断的条件:由于x可为正也可为负,不断的将 x /10,最后都会变成0,故循环判断条件应该为while( x != 0);

2.判断溢出:提前判断

最大数:在最大数的倒数第二位(最大数的1/10)的时候就需要进行判断

  • 如果比这个数大,后面就不需要进行判断,加任何数都会溢出,图中①;
  • 如果等于这个数,就需要跟最大数的末尾数字7进行比较,如果大于7,会溢出,图中②③。

最小数:同样如此,在最小数的倒数第二位(最小数的1/10)的时候就需要进行判断

  • 如果比这个数小,后面就不需要进行判断,加任何数都会溢出,图中①;
  • 如果等于这个数,就需要跟最大数的末尾数字8进行比较,如果大于8,(加上前面的负号就越小),会溢出,图中②。

代码:

 1 class Solution {
2 public int reverse(int x) {
3 int rev = 0;
4 //判断是否溢出
5 while(x != 0){
6 //计算末尾数字
7 int digit = x % 10;
8 if(rev > Integer.MAX_VALUE / 10 || (rev == Integer.MAX_VALUE / 10 && digit > 7)){
9 return 0;
10 }
11 if(rev < Integer.MIN_VALUE / 10 || (rev == Integer.MIN_VALUE / 10 && digit < -8)){
12 return 0;
13 }
14 //将末尾数字放入反转数字的末尾
15 rev = rev * 10 + digit;
16 x /= 10;
17 }
18 return rev;
19 }
20 }

 小知识:

做这道题的时候,我发现我不会数学取余了,搜索博客整理一下java中取余的规则:

1. 负数 % 负数 = 结果为负

2. 负数 % 正数 =  结果为负

3. 正数 % 负数 = 结果为正

总结:计算时不管正负号,全部按照正数来计算,最终的正负号由分子来决定,与分子的正负号相同。

力扣7(java)-整数反转(中等)的更多相关文章

  1. 力扣题目汇总(反转字符串中的单词,EXCEL表列序号,旋置矩阵)

    反转字符串中的单词 III 1.题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode ...

  2. 力扣(LeetCode)反转链表 个人题解

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可以迭代或 ...

  3. Leetcode(力扣) 整数反转

    Leetcode 7.整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例: 输入: -123 输出: -321 注意: 假设我们的环境只能存储得下 32 位的有符 ...

  4. Java实现 LeetCode 7整数反转

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

  5. 详解 LeetCode_007_整数反转(Java 实现)

    目录 LeetCode_007_整数反转 题目描述 总体分析 解决方案 小结 LeetCode_007_整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示 ...

  6. 刷题-力扣-541. 反转字符串 II

    541. 反转字符串 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string-ii 著作权归领扣网络所有. ...

  7. 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题

    题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...

  8. 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度

    题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...

  9. 力扣算法经典第一题——两数之和(Java两种方式实现)

    一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...

  10. 力扣1052. 爱生气的书店老板-C语言实现-中等难度

    题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...

随机推荐

  1. IP对讲广播音频模块解决方案

    需求分析   随着数字化进程的不断推进,对讲已经覆盖到了各行业各业.并且也逐渐呈现出场景分散化的特点.鉴于此,团队根据市场的变化,及时推出了一款标准化的模块,方便系统集成厂商集成和运用,从而达到节省开 ...

  2. 20_使用SDL显示BMP图片

    文本的主要内容是:使用SDL显示一张BMP图片,算是为后面的<显示YUV图片>做准备. 为什么是显示BMP图片?而不是显示JPG或PNG图片? 因为SDL内置了加载BMP的API,使用起来 ...

  3. 3D渲染速度慢,花重金买显卡还是用云渲染更划算

    3D渲染对建筑师和设计师来说并不陌生,3D渲染的过程中出现渲染卡顿.特殊材质难以渲染,或者本地配置不足.本地渲染资源不够时,常常会影响工作效率.本文比较了3D渲染时,为提高工作效率,买显卡还是用云渲染 ...

  4. DialogFragment源码分析

    目录介绍 1.最简单的使用方法 1.1 官方建议 1.2 最简单的使用方法 1.3 DialogFragment做屏幕适配 2.源码分析 2.1 DialogFragment继承Fragment 2. ...

  5. FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg

    FFmpeg支持Linux.macOS.Windows.Android等操作系统,其中Linux系列包括Ubuntu.Debian.Mint.CentOS.RHEL.Fedora等分支.FFmpeg官 ...

  6. Postman模拟向Eureka注册服务

    1.官方地址:https://github.com/Netflix/eureka/wiki/Eureka-REST-operations 2.自己搭建一个 Eureka服务运行起来. 3.打开Post ...

  7. KingbaseESV8R6中查看索引常用sql

    前言 KingbaseES具有丰富的索引功能,对于运行一段时间的数据库,经常需要查看索引的使用大小,使用状态等. 尤其重复索引的存在,有时会因为索引过多而造成维护成本加大和减慢数据库的运行速度. 下面 ...

  8. KingbaseES V8R6备份恢复案例之---sys_waldump解析wal日志PITR恢复

    ​ 案例说明: 复现用户删除表(drop table)误操作,通过wal日志解析找到误操作时间点,执行基于时间点的恢复(PITR). 适用版本: KingbaseES V8R6 一.模拟业务现场操作 ...

  9. markdown 常用表情符号 (github emoji)

    markdown 常用表情(emoji) 官网[非笔者维护,仅做引用] Face Smiling 咧嘴笑 grinning 汗颜笑 sweat_smile 爆笑 rofl 眨眼笑 wink innoc ...

  10. 【已解决】aconda3 创建和切换jupyter Kernel(安装好了tensorflow在jupyter中无法使用)

    如下图:在这里更换python环境内核(如果你把tensorflow安装在了一个新建的虚拟环境) 1. 创建新的环境(或者是直接激活进入已经安装了tensorflow的环境) conda create ...