KANO07 @ 2023-08-03 14:47:59
#include<iostream>
#include<string>
using namespace std;
int main()
{
string n, out = "";
cin >> n;
int a = n.size() - 1;
//为0情况
if(n=="0")
{
cout << 0;
return 0;
}
//去除末尾0
if (n[a] == '0')
{
n.pop_back();
while (n[a - 1] == '0')
{
n.pop_back();
a--;
}
}
//翻转
for (int i = 0; i <= a; i++)
{
out =n[i] + out;
}
//负数情况
if (n[0] == '-')
{
out.pop_back();
out = '-'+out;
}
cout << out;
return 0;
}
by Cryflmind @ 2023-08-03 15:14:27
事实上……似乎是你的输出有点问题
这有一组数据样例:
输入:
-12345000
预计输出:
-54321
你的程序输出:
-(一个方块,未知数据)54321
by Cryflmind @ 2023-08-03 15:24:00
可能的错误在翻转的位置:你上面去除0的时候判断的是a-1是不是0,所以当a-1不为0的时候a就会停止变化,所以a此时的位置应该是在字符串末尾后1个字符。而你下方翻转部分的代码却是直接遍历到a,导致最后n[a]也被加入了答案字符串,但这是不应该被加入的。
by Cryflmind @ 2023-08-03 15:31:17
@Cryflmind 但是直接这样修改又会出现一个错误:
输入:
100109
答案:
901001
程序输出:
01001
by KANO07 @ 2023-08-03 15:36:25
@Cryflmind 我把翻转的i <= a;改成了i <= n.size() - 1;就过了.请问-(一个方块,未知数据)54321是怎么看到的?我直接在调试台看是-54321
by Cryflmind @ 2023-08-03 15:39:24
@KANO07 直接在菜鸟的在线工具运行下就行了
by jh2023 @ 2023-08-13 17:06:34
其实用stoi就非常简单