【C语言题目练习】算法 整数反转

题目:

练习:

运行结果:

一、读题

1、输入是 int 整数,范围:-2147483648, 2147483647

2、把数字倒过来,符号不动

3、末尾的 0 反转后不要

4、反转后的数字如果超出 int 范围 → 返回 0

5、不能用 long long,不能借助 64 位大数存结果,必须提前预判溢出

二、思路

不断取出 x 最后一位digit = x%10,x=x/10砍掉最后一位,res = res*10 + digit

(提前防溢出,不能等乘完再判断,int 溢出会乱。)

例子:

res 初始 = 0

1、x=123,digit=123%10=3;x=123/10=12

检查溢出,没问题。res = 0*10 +3 = 3

2、x=12,digit=2;x=1

检查溢出,没问题。res =3*10+2=32

3、x=1,digit=1;x=0

检查溢出,没问题。res=32*10+1=321

x=0,循环结束,返回 321

三、溢出预判

int 最大值 INT_MAX = 2147483647,INT_MAX /10 = 214748364

如果 res > 214748364:res*10 直接爆上限,溢出

如果 res == 214748364,并且取出的个位digit>7,res*10+digit>2147483647溢出

int 最小值 INT_MIN = -2147483648,INT_MIN /10 = -214748364

如果 res < -214748364:res*10 直接爆下限,溢出

如果 res == -214748364,并且digit < -8,就溢出

相关推荐
Nil2081 小时前
leetcode 55跳跃游戏
算法·leetcode·游戏
longlongzihan1 小时前
LeetCode 128. 最长连续序列 —— 从排序到哈希集合
数据结构·c++·算法·leetcode·排序算法·哈希表
多弗朗皮卡丘1 小时前
C++多继承
开发语言·c++·多继承
mmmmath_31 小时前
二叉树の一些知识
数据结构·算法
DongQiShanRen1 小时前
裁决台账双向互校(下):台账哈希链、三向对账与最小落地
人工智能·深度学习·算法·目标跟踪·自然语言处理·rust·哈希算法
lie..1 小时前
30天从零开始学AI应用开发(Day 19):项目二完结:RAG 知识库问答系统,把自己攒的资料变成私人顾问
开发语言·人工智能·python
SWAGGY..1 小时前
【C++进阶】:(7)红黑树的原理与 C++ 实现:结构设计、插入调整及性质验证
android·java·开发语言·c++·算法
-dzk-2 小时前
【技巧】LC 31.下一个排列
算法
(Charon)2 小时前
【C++面试】堆内存与栈内存:string、vector和对象到底存在哪里
开发语言·c++·面试