chieftains @ 2023-07-15 15:24:38
#include<iostream>
using namespace std;
int main()
{
int flag = 0;
string s;
cin >> s;
if (s[0] == '-') {
for (int i = 1; i <= s.size() / 2; i++) {
swap(s[i], s[s.size() - i ]);
}
if(s[1] == '0' ) {
s.erase(0,s.find_first_not_of('0'));
flag = 1;
}
for (int i = 0; i <= s.size(); i++) {
cout << s[i];
}
}
else {
for (int i = 0; i <= s.size()/2; i++) {
swap(s[i], s[s.size() - i]);
}
if (s[0] == '0') s.erase(0, s.find_last_not_of('0')); //看了大佬的代码,本意去0,但是失败了,不理解
for (int i = 0; i <= s.size(); i++) {
cout << s[i];
}
//cout<<s; 想直接输出,但是莫名最后一位会丢掉,不理解+2
}
return 0;
}
by moment0303 @ 2023-07-15 16:22:15
检查一下如果s的长度为1的时候
by chieftains @ 2023-07-15 17:21:25
@moment0303 啥意思呀 ?_?
by chieftains @ 2023-07-15 17:27:39
@moment0303 是说只输入1个数字吗?如果只输入一个数字它就是照常输出
by moment0303 @ 2023-07-16 12:35:51
@chieftains搞错了,是输出前面有空格
by moment0303 @ 2023-07-16 12:45:38
Ac了,看看注释
#include<iostream>
using namespace std;
int main()
{
int flag = 0;
string s;
cin >> s;
//排除特殊情况
if(s.size()<2) {
cout<<s;
}
else if(s.size()==2 and s[0]=='-') {
cout<<s;
}
else if (s[0] == '-') {
for (int i = 1; i <= s.size() / 2; i++) {
swap(s[i], s[s.size() - i ]);
}
//原代码去0有问题
//修改:
if(s[1]=='0'){
int j=1;
while (s[j]=='0'){
for(int i=j;i<s.size();i++){
s[i]=s[i+1];
}
}
}
for (int i = 0; i <= s.size(); i++) {
cout << s[i];
}
}
else {
for (int i = 0; i <= s.size()/2-1; i++) {//原代码 是 i <= s.size()/2,当有四个元素时,会访问前三个即下标0,1,2与4,3,2交换,会有空格在前方,所以减一就可以
swap(s[i], s[s.size() - i-1]);//这里减一
}
if (s[0] == '0'){ //看了大佬的代码,本意去0,但是失败了,不理解 原因 810颠倒后是018有前置0,要消除
int j=0;
while (s[j]=='0'){
for(int i=j;i<s.size();i++){
s[i]=s[i+1];
}
}
}
for (int i = 0; i <= s.size(); i++) {
cout << s[i];
}
//cout<<s; 想直接输出,但是莫名最后一位会丢掉,不理解+2
//现在好啦
}
return 0;
}
by moment0303 @ 2023-07-16 12:49:32
by moment0303 @ 2023-07-16 12:54:58
这个方法去0要求第一个元素是0,然而你的第一个是负号,所以失败了;题解里是s1=-00000xxxxxxxxx s2=00000xxxxxxxxx 用s2执行操作就不翻车了 我改的代码是用循环的,新手可以理解
by moment0303 @ 2023-07-16 12:56:01
以后尽量简洁代码
by chieftains @ 2023-07-16 15:01:57
@moment0303 好的大佬,我明白了OvO感谢!!
by moment0303 @ 2023-07-16 15:36:42
《大佬》