一、题目
-
描述:
给你一个 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
二、题解
- 思路:
1.int转String;
2.反转;
3.String转int【包括异常捕获】;
三、代码(Java)
class Solution {
public int reverse(int x) {
int xRev = 0;
// 根据正负分类讨论,比较繁琐
// if(x>=0){
// // String xString = String.valueOf(x);
// // xString = StringBuilder(xString).reverse().toString();
// String xString = new StringBuilder(String.valueOf(x)).reverse().toString();
// try{
// xRev = Integer.parseInt(xString);
// }catch(NumberFormatException e){
// // e.printStackTrace();
// xRev = 0;
// }
// }else{
// String xString = new StringBuilder(String.valueOf(-x)).reverse().toString();
// try{
// xRev = -Integer.parseInt(xString);
// }catch(NumberFormatException e){
// // e.printStackTrace();
// xRev = 0;
// }
// }
//简化后的代码
String xString = new StringBuilder(String.valueOf(Math.abs(x))).reverse().toString();
try{
xRev = x<0 ? -Integer.parseInt(xString) : Integer.parseInt(xString);
}catch(NumberFormatException e){
xRev = 0;
}
return xRev;
}
}