【Leetcode】7.Reverse Integer

本文介绍两种整数反转的方法,一种利用字符串反转,另一种通过数学运算实现。文章详细解释了每种方法的步骤,并讨论了如何避免整数溢出的问题。

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

1、方法一

思路:

(1)先把x取绝对值并转换为String,反转String再转换回int

(2)注意Math.abs(Integer.MIN_VALUE)不能得到正数,得到的还是其本身,需做特殊处理

public class Solution {
    public int reverse(int x) {
        if (x == Integer.MIN_VALUE)
		return 0;
    	String abs = Integer.toString(Math.abs(x));
    	StringBuilder sb = new StringBuilder(abs);
    	long result = Long.parseLong(sb.reverse().toString());
    	if (x < 0)
        	result = -result;
    	if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE)
        	return 0;
    	return (int)result;
    }
}
Runtime: 42ms 

2、方法二

思路:

(1)先把x取绝对值求逆序

(2)循环求逆序值,存于result,一旦result溢出则返回0

(3)x<0,则返回result的相反数

(4)考虑逆序的整数可能溢出,result需要定义为long型,最后再强制转换为int

public class Solution {
   public int reverse(int x) {
       int temp = Math.abs(x);
       long result = 0;
       while (temp >= 1) {
           result = 10 * result + temp % 10;
           if (result > Integer.MAX_VALUE)
              return 0;
           temp /= 10;
       }
       if (x < 0)
          result = -result;
       return (int)result;
   }
}

时间复杂度:O(m),mx的位数

Runtime: 37ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值