当前位置: 首页 > article >正文

Leetcode-整数反转

题目链接:https://leetcode.cn/problems/reverse-integer/description/

题目本身没啥好说的,但是在处理整数溢出的时候,需要注意一下

一开始判断溢出是用:

if (res*10 > INT_MAX || (res*10 + temp) > INT_MAX)

然而这是没有意义的,因为如果乘法已经执行,并且结果溢出了,那么 res * 10 的计算结果将是一个未定义的行为。正确的方法应该为:

if (res > INT_MAX/10 || (res == INT_MAX/10 && temp > 7))

此外使用INT_MAX需进入的是<limits.h>

完整代码

int reverse(int x) {
   int res = 0;
   int flag = 0;
   int temp;
   if (x == -2147483648) x = 2147483647;
   if (x < 0) {
        x = - x;
        flag = 1;
   }
   while(x > 0) {
        temp = x % 10;
        x /= 10;
        if (res > INT_MAX/10 || (res == INT_MAX/10 && temp > 7)){
            return 0;
        }
        res = res*10 + temp;
   }
   if (flag) res = - res;
   return res;
}


http://www.kler.cn/a/579911.html

相关文章:

  • 每日学Java之一万个为什么
  • 分布式事务的原理
  • 网络安全之tcpdump工具
  • 隐私保护在 Facebook 内容审核系统中的应用
  • 机器学习篇——决策树基础
  • python采集京东商品详情数据,API接口文档说明
  • Elasticsearch 7.x入门学习-系统架构与工作流程
  • 人工智能直通车系列13【机器学习基础】(线性回归模型实现scikit - learn)
  • 图论——差分约束
  • 贪心算法三
  • Android Glide 框架线程管理模块原理的源码级别深入分析
  • C++基础算法:高精度
  • 项目-苍穹外卖(二)增加用户+用户分页查询
  • BUUCTF [GUET-CTF2019]soul sipse 1
  • K8S 集群搭建——cri-dockerd版
  • KUKA机器人:智能制造的先锋力量
  • 深入理解 HTML 中的段落与折行
  • Java数据结构第十九期:解构排序算法的艺术与科学(一)
  • 【Ubuntu系统设置固定内网ip,且不影响访问外网 】
  • debian根文件系统制作