LeetCode7:整数反转(栈-字符串)

这篇博客介绍了一个LeetCode问题——如何反转32位有符号整数,讨论了避免溢出的条件,并提供了两种解法:利用栈的先进后出性质和转换为字符串后的双指针交换。示例代码展示了这两种方法的实现。
摘要由CSDN通过智能技术生成

整数反转

1、给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
2、假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

示例 1:
输入: 123
输出: 321

示例 2:
输入: -123
输出: -321

示例 3:
输入: 120
输出: 21

注意:
通过栈和字符串来处理都不是最好的办法,我们每次只需要拿到数字的最后一个数即可,通过取模和除法运算即可。

  /**
     * 翻转一个数字:123-> 321:取模和除法操作
     * @param x
     * @return
     */
    public int reverse3(int x){
   

        if(x>Math.pow(2,31)-1 || x<Math.pow(-2,31)){
   
            return 0; //超了最大值低于最小值就返回0
        }

        int ret = 0;
        while (x !=0){
   
            //末位数字
            int rest = x%10;
            int newRet = ret*10+rest;
            //如果翻转后的数字溢出则直接返回0
            if ((newRet - rest) / 10 != ret)
                return 0;

            ret = newRet;
            x = x/10;
        }

        return ret;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值