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

力扣7:整数反转

力扣7:整数反转

  • 题目
  • 思路
  • 代码

题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。

思路

这道题我们可以分成两部分来做,一是完成反转二是检测是否溢出。
我们先说第一部分,想要完成反转我们可以一位一位的插入数字,但是返回值和参数都是整数类型所以我们只能使用数学方法来完成插入。我们每次都让参数对10进行取模也就是得到最后一位数字number,再让返回值*10+number。这样就可以完成数学方法的插入了。
第二部分也是最关键的部分,如何判断是否溢出,2^31-1=2147483647。这是一个十位数字所以我们判断的关键也就是十位数字。我们先假设如果参数x就是2147483647,反转过来就是7463847412这明显是溢出了但是我想让大家思考一下,反转过来的数字y它的最后一位是多少?当然仅仅是在x为十位数字的时候,我们可以发现y的最后一位也就是x的首位它不就只有两个值吗1或者2,因为参数x也不能溢出啊。所以说是判断十个数字是否溢出其实我们只需要判断前九位是否溢出就可以。那么怎么判断是否溢出呢?也很简单,既然只需要判断前九位是否溢出我们直接判断y是不是小于INT_MAX/10不就可以了。对于负数也是一样的只需要判断y是不是大于INT_MIN/10即可。也就是说整个判断的条件就是INT_MIN/10<y<INT_MAX/10,只要y在这个范围内就算最后还要插入第十位数字我们也可以保证不会溢出因为第十位只能是1或者2。

代码

class Solution {
public:int reverse(int x) {int res = 0;while (x != 0) {// 提前判断下面给res插入数字后会不会溢出//判断前九位即可if (res < INT_MIN / 10 || res > INT_MAX / 10) {return 0;}int number = x % 10;x /= 10;res = res * 10 + number;}return res;}
};
http://www.dtcms.com/a/303045.html

相关文章:

  • 利用DataStream和TrafficPeak实现大数据可观察性
  • jQuery 最新语法大全详解(2025版)
  • 下载k8s官方组件chart和容器镜像
  • JavaScript中的Promise.all方法详解
  • 坚鹏:AI智能体培训是知行学成为AI智能体创新应用引领者的基础
  • 【归并排序】排序数组(medium)
  • 阿里云【免费试用】Elasticsearch 智能运维 AI 助手
  • 应用信息更新至1.18.0
  • 加法器 以及ALU(逻辑算术单元)
  • 深入解析 Spring 获取 XML 验证模式的过程
  • redis数据库的四种取得 shell方法
  • C++模板进阶:从基础到实战的深度探索
  • python生成 requirement.txt 文件
  • 一个高效的阿里云漏洞库爬虫工具,用于自动化爬取和处理CVE数据
  • ROS2入门之开发环境搭建
  • AI-调查研究-40-多模态大模型量化 格局重塑:五大开源模型横评与技术对比
  • Navicat 17 教程:Windows 和 Mac 系统适用
  • 【运维】Smartctl安装及使用指南
  • Python爬虫实战:快速采集教育政策数据(附官网工具库API)
  • 设计模式实战:自定义SpringIOC(亲手实践)
  • 常见依赖于TCP/IP的应用层协议
  • Taro 网络请求相关 API 全面解析
  • 初识opencv05——图像预处理4
  • 【Linux系统】Ext2文件系统 | 软硬链接
  • 接口测试核心概念与实践指南
  • 分享一个脚本,从mysql导出数据csv到hdfs临时目录
  • Vue中Computed与Watch的深度解析:缓存机制与适用场景
  • LeetCode 214:最短回文串
  • Leetcode148. 排序链表 中遇到的错误
  • 【LeetCode 热题 100】(一)哈希