leetcode-cn 题库 算法部分 7 整数反转 (简单)

本文介绍了一种解决LeetCode题目“整数反转”的算法实现。通过将整数转换为字符串,翻转字符串并检查翻转后的结果是否超出32位有符号整数的范围,确保了算法的正确性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class Solution {
    public int reverse(int x) {
        int y = 0;
        Boolean pm;
        if ((x == (-2 << 30)) || (x == ((2 << 30) - 1)) || x == 0) {
            return 0; // 取出输入值的绝对值时的边界条件(int取不到-2^31的绝对值),
                      // 另外部分特殊结果可以先返回
        } else {
            y = x > 0 ? x : -x; // 取得符合预期范围内输入值的绝对值用于后续步骤
            pm = x > 0 ? true : false; // 判断输入值的正负
        }

        String temp0 = String.valueOf(y); // 把绝对值转成字符串
        StringBuilder temp1 = new StringBuilder(temp0).reverse(); // 得到可变字符串并翻转
        temp1 = !temp0.endsWith("0") ? temp1 : temp1.deleteCharAt(0); 
        // 根据数字最后一位是否是0,删除翻转后字符串首位的0
        String temp2 = temp1+"";
        // 转回字符串
        long z = Long.valueOf(temp2); // 或者Long.parseLong(temp2);
        // 使用long类型存储转回的数子,可能会超过int范围
        if ((z < (-2 << 30)) || (z > ((2 << 30) - 1))) {
            return 0;
        }else{
            if (pm){
                return (int)z;
            }else{
                return -(int)z;
            }
            // 根据是否符合范围要求和输入值正负号返回结果
        }
    }
}

原题链接

https://leetcode-cn.com/problems/reverse-integer/

描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值