• [LeetCode]7. Reverse Integer


    原题链接:https://leetcode.com/problems/reverse-integer/description/

    意思是对于给定的数字,调换最高位和最低位,次高位和次低位......然后输出。如果调换数位后超过了32位int表达范围就输出0。

    我的提交(又不知道从哪位大佬博客看到,以后一定记下来说明出处,我自己代码溢出时出错):

    class Solution {
    public:
        int reverse(int x) {
            int result = 0;
            
            while(x != 0) {
                if (abs(result) > INT_MAX / 10) return 0;
                result = (result * 10) + (x % 10);
                x /= 10;
            }
            
            return result;
        }
    };

    思想:计算方法一般都是取余加前面结果*10,重点就是结果溢出时的处理,就是这一行代码:

    if (abs(result) > INT_MAX / 10) return 0;

    在下一次计算前,判断当前结果绝对值是不是大于INT_MAX / 10,从而预测是不是溢出。这个是在我自己做的时候没想到的(关于溢出处理我还写了超级长的判断,结果还是没通过测试用例)

    总结:溢出处理

  • 相关阅读:
    Java 窗口 绘制图形 #1
    支配树
    Tarjan算法
    Baby-step giant-step算法
    初等群论
    第七次java作业
    学习所用的开发环境
    第六次java作业
    第五次java作业
    第四次java作业
  • 原文地址:https://www.cnblogs.com/qianzixuan1996/p/8288483.html
Copyright © 2020-2023  润新知