【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;
    }
}