题目链接
题目描述
输入一个整数 a
,将这个整数的各位数字颠倒后输出。
例如,输入 123000
,则输出 000321
。
解题思路
核心思路:字符串处理
虽然题目描述中提到了“整数”,但从示例 123000
-> 000321
我们可以看出一个关键点:数字末尾的 0
在颠倒后变成了前导 0
并且被保留了下来。
如果进行纯数学运算,一个整数 123000
颠倒后会得到 321
,前导零会丢失。因此,解决这个问题的最佳方法是将其作为一个字符串来处理,而不是一个数值。
算法步骤
- 读取输入:将整个输入的数字序列作为字符串读入。
- 反转字符串:使用相应编程语言提供的内置功能来反转这个字符串。
- 输出结果:直接打印反转后的字符串。
这个方法可以优雅地处理所有情况,包括含有前导或后导零的数字序列。
代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string s;
cin >> s;
reverse(s.begin(), s.end());
cout << s << endl;
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
StringBuilder sb = new StringBuilder(s);
String reversedString = sb.reverse().toString();
System.out.println(reversedString);
}
}
import sys
def solve():
try:
s = sys.stdin.readline().strip()
if not s:
return
except (IOError, ValueError):
return
# Using string slicing to reverse the string
reversed_s = s[::-1]
print(reversed_s)
solve()
算法及复杂度
-
算法:字符串反转
-
时间复杂度:
,其中
是输入数字字符串的长度。
- 读取和反转字符串都需要线性的时间。
-
空间复杂度:
。
- 需要
的空间来存储输入的字符串。
- 需要