7,整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
这个题目的思路有两种,一个就是利用字符串的反转功能,一个是利用秦九韶算法。
方式一:利用字符串反转
public static int reverse2(int x) {
//将int类型变为String类型
String str = String.valueOf(x);
//因为通过字符串进行反转的时候,有一个符号的问题,所以要先将符号记录,然后将其消除,最后在添加。
//判断时候是正数
boolean flag = true;
if (str.contains("-")) {
flag = false;
str = str.replace("-","");
}
//之后通过字符串反转的函数进行反转。
String reverseStr = new StringBuilder(str).reverse().toString();
int res = 0;
try {
res = Integer.parseInt(reverseStr);
} catch (NumberFormatException e) {
return 0;
}
if (!flag) {
res = -res;
}
return res;
}
方式二:利用秦九韶算法
public int reverse(int x) {
int r = 0;
while (x != 0) {
//通过测试可知,一个负数取模依旧是负数,所以就可以使用秦九韶算法进行计算。
r = r * 10 + x % 10;
x /= 10;
}
if (r > Integer.MAX_VALUE) {
return 0;
}
if (r < Integer.MIN_VALUE) {
return 0;
}
return r;
}