当前位置: 首页 > >

力扣7.整数反转(java)

发布时间:



力扣7.整数反转
题目思路代码



LeetCode笔记汇总


题目

给你一个 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


思路

首先定义一个boolean类型的flag用来存储变量的正负符号,这样在之后的操作中就可以忽略符号
将整数变为字符串,然后按倒序每次从中取一个,通过StringBuilder类拼接成倒序。
再将拼接字符串转回int类型,判断符号并输出。
本题需要考虑的特殊情况是:如果反转后整数超过 32 位的有符号整数的范围 [?231, 231 ? 1] ,就返回 0。
在java中可以直接利用异常类,如果在转成int型时,超过范围系统会抛出NumberFormatException,此时我们只需将其捕获,在异常处理代码中直接return 0。这也是java的一个小技巧,很多边界情况都可以通过异常类来直接处理。


代码

class Solution {
public int reverse(int x) {
boolean flag = x > 0 ? true : false;
int ans;
x = Math.abs(x);
String str = String.valueOf(x);
int l = str.length();
StringBuilder sb = new StringBuilder();
for(int i=0;i
sb.append(str.charAt(l-i-1));
}
try{
ans = Integer.valueOf(sb.toString());
}catch(NumberFormatException e){
return 0;
}
if(flag) return ans;
else return -ans;
}
}



友情链接: