70求助

P1307 [NOIP2011 普及组] 数字反转

liruizhou_lihui @ 2023-09-06 19:05:12

#include<bits/stdc++.h>
using namespace std;
int main(){
    string a;
    cin>>a;
    int len;
    len=a.length();
    if(a[0]=='-')cout<<'-';
    for(int i=len-1;i>=0;i--){
        if(a[i]!='-' && a[i]!='0')cout<<a[i];
    }
} 

by zhongboxuan123 @ 2023-09-06 19:14:32

@liruizhou123 零的问题,不是所有的零都需要过滤掉,中间的零就不能扔掉


by Discorder_ @ 2023-09-06 19:15:35


#include<bits/stdc++.h>
using namespace std;
int main(){
    string a;
    cin>>a;
    int len;
    bool flag=false;
    len=a.length();
    if(a=="0"){ cout<<a; return 0; }
    if(a[0]=='-')cout<<'-';
    for(int i=len-1;i>=0;i--){
        if(a[i]!='-' && (a[i]!='0'||(a[i]=='0'&&flag==true))){
            cout<<a[i];
            if(!flag) flag=true;
        }
    }
} 

by Discorder_ @ 2023-09-06 19:16:17

还有本身就只有一个0的情况


by dongshucheng @ 2023-09-06 19:26:38

@liruizhou123

hack 数据

101

应该输出

101

而你的代码输出

11

那你应该先将这个反转的数算出来然后直接输出就行了。那么可以利用个 n ,将反转的数记录下来。计算式子: n=n*10+a_i


by Golden_Little_Tiger @ 2023-10-01 17:16:55

把 if(a[i]!='-' && a[i]!='0') 改成 if(a[i]!='-' && a[len-1]!='0') 试试


|