整数反转(C, C++, Python)
- 1. C语言实现
- 2. C++语言实现
- 3. python语言实现
本文讲述了Math类中第7个问题的几种解法,实现语言包括C,Python以及C++。
问题描述:
问题分析:
这个问题最重要的地方就是整数溢出的问题,我们的取值范围为[-2147483648, 2147483647], 如果输入数字为 2147483646,那么输出结果就是6463847412,这就超过了32位,造成溢出了。我们需要留意的就是在程序中加上判断是否溢出的条件即可。
1. C语言实现
C语言实现整数反转的方法比较直白和简单,依次取出输入值的每一位数字然后进行反转即可,代码如下:
int reverse(int x){
// 定义长整型变量ans用来存储结果,之所以用长整型是因为考虑到结果会有溢出的概率,超过了int型的存储范围
long int ans = 0;
// while循环中开始进行整数反转
while(x != 0){
// 定义pop用来存储x的最后一位的数字
int pop = x % 10;
// 更新输出结果
ans = ans * 10 + pop;
// 更新x的值
x = x / 10;
}
// 加条件进行判断输出结果是否溢出
if((ans<-2147483648)|(ans>2147483647))
return 0;
// 返回结果
return ans;
}
运行结果为:
2. C++语言实现
C++的实现和C的实现原理是相同的,再次不在赘述,代码如下:
class Solution {
public:
int reverse(int x){
// 定义长整型变量ans用来存储结果,之所以用长整型是因为考虑到结果会有溢出的概率,超过了int型的存储范围
long int ans = 0;
// while循环中开始进行整数反转
while(x != 0){
// 定义pop用来存储x的最后一位的数字
int pop = x % 10;
// 更新输出结果
ans = ans * 10 + pop;
// 更新x的值
x = x / 10;
}
// 加条件进行判断输出结果是否溢出
if((ans<-2147483648)|(ans>2147483647))
return 0;
// 返回结果
return ans;
};
运行结果为:
3. python语言实现
python实现的方式与C和C++不同,其实现过程如下:
- 将输入转化为字符串
- 将字符串进行反转,在反转的过程中要对输入的正负判断
- 将反转得到的结果在转化为整型
- 对反转的结果进行判断是否溢出
代码如下:
class Solution:
def reverse(self, x: int) -> int:
# 根据输入的正负反转字符串
string_x = str(x)[::-1][:-1] if x < 0 else str(x)[::-1]
# 判断是否溢出
if int(string_x)<-2147483648 or int(string_x) >2147483647:
return 0
else:
# 根据输入的正负添加负号‘-’
return int('-' + string_x) if x < 0 else int(string_x)
运行结果为: