力扣刷题第6天——整数反转

力扣刷题第6天——整数反转,第1张

一、题目详情

来源:力扣(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 打卡完成!!!

其实这是一道简单题,按道理应该多写两题,但今天是周末就稍稍偷一下懒啦~

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)