# 描述
输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有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结束循环
图解:
核心代码:
#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)