给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
class Solution {
public int reverse(int x) {
int maxLen = (Math.abs(x) + "").length(); //位数
long res = 0; //结果数
for (int i = 1; i <= maxLen; i++) {
res += (x / (int) Math.pow(10, i - 1) % 10 * Math.pow(10, maxLen - i));
}
if (res > Math.pow(2, 31) - 1 || res < -Math.pow(2, 31)) {
return 0;
}
return (int) res;
}
}
// 注意Math.pow()方法的double类型的,使用时需转换为int(易错)
// 123%10*100 = 300
// 123/10%10*10 = 20
// 123/100%10*1 = 1
题解思路
1、本题考虑到int类型的边界,故将结果数定义为long类型;
2、用一个整数+""的方式简单转换成字符串,从而获得该整数位数;
3、再按位数遍历,依次加入结果数即可,若结果数不在返回则返回0,否则返回转换成int类型的结果数。