# 描述

        输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

输入描述: 输入一个int整数
输出描述: 将这个整数以字符串的形式逆序输出

示例1
输入: 1516000
输出: 0006151


方法一: 采用自带的字符串翻转函数

核心思想:
        首先将整数转化为字符串,然后用C++库中自带的reverse函数翻转字符串,然后输出字符串即可。

核心代码:

#include<iostream>
#include<algorithm>
using namespace std;

void reverse_num(int num){
    string s = to_string(num);
    reverse(s.begin(), s.end());
    cout<<s<<endl;
}

int main(){
    int num;
    cin>>num;
    reverse_num(num);
    return 0;
}

时间复杂度O(n)
空间复杂度O(1)
复杂度分析:本题使用了STL模板里面的reverse函数翻转功能,该函数的时间复杂度为O(n),因此时间复杂度为O(n)


方法二:除留取余法

核心思想:
        将整数n对10进行取余数,得到该数字位的数据转化为字符并输出,每次完成后对数据除以10来舍掉最后一位,直到整数为0结束循环


图解: alt

核心代码:

#include<iostream>
#include<algorithm>
using namespace std;

void reverse_num(int n){
    char c;      //临时字符变量
    while(n){      
        c = n % 10 + '0';     //获取数字的低位数字,并转化为字符
        n /= 10;           //每次循环舍掉最后一位
        cout<<c;          //输出该字符
    }
}

int main(){
    int n;
    cin>>n;
    if(n == 0)     //n为0的情况
       cout<<n;
    else            //n为非0的情况
       reverse_num(n);
    return 0;
}

时间复杂度O(log10n)

空间复杂度O(1)
复杂度分析:while循环里面每次都是除以10,因此总的循环次数t和数字n满足:n=10^t,所以循环次数t=log10n,因此时间复杂度为O(log10n)