Day10 2023/01/17
难度:简单
题目
输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001,数据范围:0 ≤ n ≤ 2^30−1
输入描述:
输入一个int整数
输出描述:
将这个整数以字符串的形式逆序输出
示例
输入:1516000
输出:0006151
思路一
输入数字nums % 10取得当前个位数并打印,然后nums / 10去掉当前个位数,循环直到输出所有数字。
思路二
使用c++的库函数来实现
关键点
reverse(start, end),反转字符串,start 代表字符起始位置,end 为结束位置
算法实现
c++代码实现-取值法
//方法一:取值法
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main () {
int nums; //输入数值
cin >> nums;
while(nums) { // 非0为真
cout << nums % 10; //去当前各位数
nums /= 10; //去掉已打印的个位数
}
return 0;
}
- 时间复杂度 --- 遍历字符串,n为字符串长度
- 空间复杂度 --- 没有额外的辅助空间
c++代码实现2-库函数
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//方法二:利用库函数
int main () {
int nums; //输入数值
cin >> nums;
string str = to_string(nums); //转成字符串
reverse(str.begin(), str.end()); //倒序字符串
cout << str << endl; //输出
}
- 时间复杂度 --- reverse方法的复杂度为O(n)
- 空间复杂度 --- 无额外的辅助空间
总结
- 本题比较简单,推荐掌握取值法。