一、题目详情
来源:力扣(LeetCode)
链接:力扣
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例1:
输入:x = 123
输出:321
示例2:
输入:x = -123
输出:-321
提示:
-231 <= x <= 231 - 1
二、错误代码
2.1代码
class Solution {
public:
int reverse(int x) {
string str=to_string(x);//转成字符串
std::reverse(str.begin(),str.end());//反转字符串
long ans=stoi(str);//字符串转数字
if(x<0){
ans*=-1;
}
return ans>INT_MAX||ans
2.2错误分析
对小范围数据可以较好地处理,但无法应对较大型的数据,运行会抛出异常。
三、可执行代码
3.1思路
设置新的整数类型存放结果,令结果每次循环乘10后加上x个位数字,再将x整除10实现位数后移,知道x的数字归0即所有数字按逆序位赋给结果数字后,循环结束。
3.2代码
class Solution {
public:
int reverse(int x) {
long ans=0;
while(x){
ans=ans*10+x%10;
x/=10;
}
return ans>INT_MAX||ans
3.3代码分析
时间复杂度:O(log∣x∣)
空间复杂度:O(1)
四、每日打卡(滴滴!!)
2022.4.17 打卡完成!!!
其实这是一道简单题,按道理应该多写两题,但今天是周末就稍稍偷一下懒啦~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)