【LeetCode每日一题】整数反转
整数反转
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
2、算法描述
核心思想:
主要就是分情况讨论,题目本身很简单,把数字按照字符串的方式反转就行
具体实现:
1、等于0的情况
(1)、x == 0
(2)、x == Integer.MIN_VALUE
(3)、反转的后x范围比 int的范围还要大
2、不等于0的情况
(1)、x < 0
(2)、X > 0
3、代码实现
package com.java;
/**
* @author huangchao
* @date 2021/5/3
*/
public class Day31_Solution {
public int reverse(int x) {
if (x == 0 || x == Integer.MIN_VALUE) {
return 0;
}
StringBuffer s = new StringBuffer(Integer.toString(Math.abs(x)));
s.reverse();
int y = 1;
if (x < 0) {
y = -1;
}
while (s.charAt(0) == '0') {
s.delete(0,1);
}
Long l = Long.parseLong(s.toString());
if (l > Integer.MAX_VALUE) {
return 0;
}
return Integer.parseInt(s.toString()) * y;
}
}