[LeetCode] #7 整数反转 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1],就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 输入:x = 123 输出:321 我能想到的有两种思路。一是通过数学方式反转,...
首先我们想一下,怎么去反转一个整数?用栈?或者把整数变成字符串,再去反转这个字符串?这两种方式是可以,但并不好。实际上我们只要能拿到这个整数的末尾数字就可以了。以12345为例,先拿到5,再拿到4,之后是3,2,1,我们按这样的顺序就可以反向拼接处一个数字了,也就能达到反转的效果。怎么拿末尾数字呢?
将栈 A 的栈顶弹出,压入栈 B 的栈底,重复上述过程直到栈 A 为空,此时就完成了求整数逆序数的功能。实际中,弹出和压入操作并不需要借助真正的栈,可以通过求余(数学运算)实现。 其实,Python 语言的整数类型的取值范围并不存在限制,因此更不存在所谓的溢出。 Java 实现 classSolution{publicintreverse(intx){lo...
因为32位有符号整数x的取值范围是-2147483648<=x<=2147483647,如果要保证反转过来不溢出,则在处理到第九位的时候整个值应该在(-214748364,214748364)之间,不然结果肯定会溢出,而有效的int值首位数字最大为2,即使反转过来也不可能大于7或小于-8,因此只需要判断第九位数字是否合法即可完成溢出判断。具体实现代码...
首先需要处理负号问题,如果是负数我们需要取其绝对值,然后再反转绝对值,而在取绝对值时需要注意int的最小值int.MinValue为-2147483648,而int.MaxValue最大值为2147483647,因此我们不能直接对int整数x直接取绝对值,而需要先把x转为long类型整数,不然会报错。 然后把绝对值反转成字符数组,同时判断正负号,如果是负数则...
同时,若想满足题目中“反转后超过32位整数范围就返回零”这条题目要求,我们需要在每轮次中*10 + x这步之后进行一下判断,看是否落在[-2147483648, 2147483647]范围之内 ❌本题特意贴心地帮我们ban掉了64位整数的使用权,所以,思路确实是上面常规的思路,但是判断目前是否还在[-2147483648, 2147483647]这个范围(正好是...
7 * 注意事项: 8 * 边界问题 9 * 数组索引越界 10 * 数值溢出边界:溢出则返回0 11 * 细节问题 12 * 首位不为0 13 * 符号处理 14 * @param x 指定整数 15 * @return 反转后的整数,或0 16 */ 17 public int reverse(int x) { 18 if (x == Integer.MIN_VALUE || x == Integer.MAX_VALU...
# 1、Java 代码// 登录 AlgoMooc 官网获取更多算法图解 // https://www.algomooc.com // 作者:程序员吴师兄 // 微信:wzb_3377 // 代码有看不懂的地方一定要私聊咨询吴师兄呀 // 整数反转(LeetCode 7):https://leetcode.cn/problems/reverse-integer/ class Solution { public int reverse(int x) { ...
首先需要处理负号问题,如果是负数我们需要取其绝对值,然后再反转绝对值,而在取绝对值时需要注意int的最小值int.MinValue为-2147483648,而int.MaxValue最大值为2147483647,因此我们不能直接对int整数x直接取绝对值,而需要先把x转为long类型整数,不然会报错。