题解 | #数字颠倒#

数字颠倒

http://www.nowcoder.com/practice/ae809795fca34687a48b172186e3dafe

HJ11数字颠倒

一.题目描述

给出一个整数将整个数逆序后以字符串的形式输出 alt

二.算法(使用reverse函数)

首先题目说是输入一个整数但是我们可以利用string读入,那么问题就转变为了将这个函数逆序后输出,可以使用reverse函数将其颠倒后输出。题目很简单,下面直接给出完整代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin>>s;
    reverse(s.begin(),s.end());//利用reverse函数对string进行翻转
    cout<<s<<endl;//输出翻转后的字符串
    return 0;
}

时间复杂度:O(logn)O(logn) 对n个字符串进行反转,复杂度在O(logn)O(logn)

空间复杂度:没有什么额外空间所以复杂度是O(1)O(1)

三.算法(模拟)

alt

我们可以发现先对这个数取余10可以得到这个数最低位的数,然后对数除以10,就可以消去这个数的最低位,利用这两个性质我们就可以将数逆序输出了,下面是完整代码:

using namespace std;
int main(){
    long long int num;
    cin>>num;
    if(num==0){//这块需要特判 当输入的数是0的时候 直接返回0
        cout<<"0"<<endl;
        return 0;
    }
    while(num){
        cout<<num%10;//输出最低位
        num/=10;//消去最低位
    }
    return 0;
}

时间复杂度:O(logn)O(logn) 对每个数进行数位上的遍历,时间复杂度约是O(logn)O(logn)

空间复杂度:O(1)O(1) 不需要什么额外空间

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务