栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

7. 整数反转

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

7. 整数反转

7. 整数反转

难度简单2956收藏分享切换为英文接收动态反馈

给你一个 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
class Solution {
    public int reverse(int x) {
        // 如果超出范围直接返回0
        int min = -(1 << 31);
        int max = (1 << 31) - 1;
        if(x == 0){
            System.out.print(0);
            return 0;
        }
        // 创建返回的StringBuffer,因为要经常修改,所以使用StringBuffer效果比较好。
        StringBuffer result = new StringBuffer();
        // 将int转化为char类型的数组
        char[] chars = String.valueOf(x).toCharArray();
        boolean flag = true;
        // 不管正负,直接逆序先录入进去。原因如下:
        // 1.如果是正数:那么就会出现1000000这种情况,倒序以后是0000001,所以前面的0要排除。
        // 2.如果是负数,那么就会出现-100000这种情况,倒序以后是000001-,在最开头的0和负号之间必定有常数,所以可以直接录入。
        // 3.0已经被排除了,所以最后一位数字不需要特别处理。必定会有内容被录入。
        for (int i = chars.length - 1; i >= 0; --i) {
            if (flag && chars[i] == '0') {
                continue;
            }
            flag = false;
            result.append(chars[i]);
        }
        // 最后一步要做的就是改变负号的位置,先删除末尾的负号,再在最前面加上负号。
        if(result.indexOf("-") != -1) {
            result.delete(result.length() - 1, result.length());
            result.insert(0, "-");
        }
        if(Long.parseLong(result.toString()) < min || Long.parseLong(result.toString()) > max){
            System.out.println(0);
            return 0;
        }
        System.out.println(result);
        return Integer.parseInt(result.toString());
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号