题解 | #数字颠倒#

数字颠倒

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) 不需要什么额外空间

全部评论

相关推荐

11-15 16:33
已编辑
微软_sde(实习员工)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
10-15 10:23
门头沟学院 Java
牛可乐的头像真牛:赶紧举报,这公司绝对是诈骗的,等你签约后工作一两个月后根据合同漏洞把你开除,并且要求你赔偿3w培训费,996是为了提前筛选心甘情愿签下合同容易受骗的群体,纯粹面向校招生精心设计的骗局
你见过哪些工贼行为
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务