leetcode-7.字符串反转【字符串】

本文解析了如何在LeetCode上解决整数反转问题,包括处理边界情况、符号判断、字符串转换和数字位交换,最终给出了完整的Java代码示例。

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

目录

题目: 7. 整数反转

图解:

思路:

 完整代码:

力扣风采(不是最优再接再励)


题目: 7. 整数反转

给你一个 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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer

图解:

思路:

  1.处理边界问题


        if(x==Integer.MIN_VALUE||x==Integer.MAX_VALUE){
            return 0;
        }

  2.处理符号的正负

 int  sign=x>0?1:-1;
 x=x<0?-x:x;//无论正负,都当成正数

 3.整数转字符串,再转字符数据

 String str=String.valueOf(x);
 char[] chars=str.toCharArray();

4.交换首位(start)和末位(end)数字,循环操作:依次交换(start++)和(end--)

 int start=0,end=chars.length-1;
        while (start<end){
            //交换两端等距离的元素
            char temp=chars[start];
            chars[start]=chars[end];
            chars[end]=temp;
            start++;
            end--;
        }

5.将原数组转换程字符串,再转成整数输出

 long value = Long.valueOf(String.valueOf(chars));
        boolean b= value>Integer.MAX_VALUE||value< Integer.MIN_VALUE;
        int result=b ? 0: (int)value;
        return result*sign;

 完整代码:


    public  static int  reverse(int x){
       //1.边界限处理
        if(x==Integer.MIN_VALUE||x==Integer.MAX_VALUE){
            return 0;
        }
        //2.处理符号
        int  sign=x>0?1:-1;
        x=x<0?-x:x;//无论正负,都当成正数
        //3.整数转字符串,再转字符数据
        String str=String.valueOf(x);
        char[] chars=str.toCharArray();
        //4.交换首位(start)和末位(end)数字,循环操作:依次交换(start++)和(end--)
        int start=0,end=chars.length-1;
        while (start<end){
            //交换两端等距离的元素
            char temp=chars[start];
            chars[start]=chars[end];
            chars[end]=temp;
            start++;
            end--;
        }
         //5.将原数组转换程字符串,再转成整数输出
        long value = Long.valueOf(String.valueOf(chars));
        boolean b= value>Integer.MAX_VALUE||value< Integer.MIN_VALUE;
        int result=b ? 0: (int)value;
        return result*sign;
    }

力扣风采(不是最优再接再励)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值