力扣7(java)-整数反转(中等)
题目:
给你一个 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)-整数反转(中等)的更多相关文章
- 力扣题目汇总(反转字符串中的单词,EXCEL表列序号,旋置矩阵)
反转字符串中的单词 III 1.题目描述 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序. 示例 1: 输入: "Let's take LeetCode ...
- 力扣(LeetCode)反转链表 个人题解
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可以迭代或 ...
- Leetcode(力扣) 整数反转
Leetcode 7.整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例: 输入: -123 输出: -321 注意: 假设我们的环境只能存储得下 32 位的有符 ...
- Java实现 LeetCode 7整数反转
7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: ...
- 详解 LeetCode_007_整数反转(Java 实现)
目录 LeetCode_007_整数反转 题目描述 总体分析 解决方案 小结 LeetCode_007_整数反转 题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示 ...
- 刷题-力扣-541. 反转字符串 II
541. 反转字符串 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string-ii 著作权归领扣网络所有. ...
- 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题
题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- 力扣算法经典第一题——两数之和(Java两种方式实现)
一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- 力扣1052. 爱生气的书店老板-C语言实现-中等难度
题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...
随机推荐
- 麦克风阵列技术-beaforming开源算法源码分析
概述 在音频前端处理算法中,beamforming算法是一个无法绕过的存在,随着AI技术的广泛发展,前端语音技术的需求也在呈现个性化的动态范围.作为一个深耕音频算法多年的老兵,发现站在巨人的肩膀上 ...
- Linux int型转换为char*型几种方法总结
一 前记 这种转换,windows下最常用就是atoi()函数.可惜的是,在Linux中没有itoa()函数,只有atoi() 这点很有趣,居然不对称. 所以在Linux中实现从整型到char*的 ...
- pfx文件导出pem和私钥,更换网站域名证书
openssl 路径: C:\Program Files\OpenSSL-Win64\bin -- 导出pem证书openssl pkcs12 -in C:\BackUp\Lightning\cert ...
- Android热点SoftAP使用方式
一.背景 最近项目中Android设备需要获取SoftAP信息(wifi账号.密码.IP等),然后传递到投屏器中,那么如何获取到SoftAP信息呢?我们知道可以通过WifiManager类里的方法可以 ...
- Android 开发day1
下载了安卓开发软件 Android studio 下载过程中遇到了,C盘默认安装路径不匹配问题,因为我的系统文件是中文的,软件是国外的软件,导致了他不让我安装,我还是最后在C盘创建了一个文件后,直接安 ...
- 记录--Vue3问题:如何实现组件拖拽实时预览功能?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 需求分析 实现一个CMS内容管理系统,在后台进行内容编辑,在官网更新展示内容. 关于后台的编辑功能,大致分为两部分:组件拖拽预览.组 ...
- 记录-JS简单实现购物车图片局部放大预览效果
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.实现效果 二.代码实现 代码不多,先看一下 HTML 里面结构很简单,初始化 MagnifyingGlass 对象来关联一个 IMG ...
- Shiro反序列化分析
前言 Shiro,一个流行的web框架,养活了一大批web狗,现在来对它分析分析.Shiro的gadget是CB链,其实是CC4改过来的,因为Shiro框架是自带Commoncollections的, ...
- KingbaseES使用sys_backup.sh脚本init初始化配置文件常见错误处理
KingbaseES使用sys_backup.sh脚本init初始化配置文件常见错误处理: 一.sys_backup.sh脚本按照如下顺序寻找初始化配置文件: [kingbase@postgres ~ ...
- List和ObservableCollection的转换
1.我们后台查询全部List数据的时候,前台需要ObservableCollection展示 这个时候List需要转换成ObservableCollection public static Obser ...