1. 题目
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
- -231 <= x <= 231 - 1
2. 解题
解题时,思路不清晰。通过学习官方提供的实例实现了算法。
class Solution {
public int reverse(int x) {
int rev = 0;//翻转后的结果
while (x != 0) {
//判断第九位的是,是否会越界,不会就继续。会就结束
if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {
return 0;
}
int digit = x % 10; //取整数的最后一位
x /= 10; //整数不能存储小数,除10之后,个位数将会省略
rev = rev * 10 + digit; // 翻转后的值*10之后为0+上任何小于10的整数,就是翻转后的结果了。
}
return rev;
}
}
执行用时: 0 ms
内存消耗: 39 MB
代码介绍的思路比较清晰了,就不文字描述了。看代码就能明白了。
参考链接:
题目来源:https://leetcode.cn/problems/reverse-integer
结题思路:https://leetcode.cn/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/
评论区