分离符号后反转绝对值的数字串,并删除反转结果前端的零。
OJ: noi_openjudge
题目 ID: ch0105-29
难度:入门
标签:字符串模拟数位python
日期: 2026-07-30 23:01
题意
反转一个整数的十进制数位。负数的负号保留在最前面;反转后最高位不能是零。
思路
先记录原数是否为负数,再对绝对值的数字字符串切片 [::-1],得到反转后的数位顺序。
原数末尾的零会在反转后出现在开头,lstrip("0") 可以删除它们。若原数为 or "0" 恢复为合法的零。最后再把原先的负号拼回去。
代码
Python代码
python
number = int(input())
sign = "-" if number < 0 else ""
reversed_digits = str(abs(number))[::-1].lstrip("0") or "0"
print(sign + reversed_digits)C++代码
cpp
#include <cstdio>
int main(){
int n;
scanf("%d",&n);
if( n < 0){
n = -n;
printf("-");
}
bool is_first_zeor = true;
while( n != 0){
int ret = n % 10;
n /= 10;
if( ret == 0 && is_first_zeor )
continue;
is_first_zeor = 0;
printf("%d",ret);
}
return 0;
}复杂度
设整数有
总结
数字反转可拆为“符号”和“绝对值数位”两部分处理,能自然覆盖负数与末尾零。