80分,WA了三个测试点,求大佬帮忙看一下

P1307 [NOIP2011 普及组] 数字反转

lbc20070331 @ 2021-10-14 21:24:37

#include<bits/stdc++.h>
using namespace std;
int a[100001];
int sum=0;
int main()
{
    int n;
    cin>>n;
    if(n<0){
        cout<<"-";
        n=abs(n);
    } 
    while(n>0){
        int s=n%10;
        a[sum++]=s;
        n=n/10;
    }
    for(int i=0;i<=sum-1;i++){
        if(a[i]==0){
            if(a[i-1]!=0&&a[i+1]!=0)                  cout<<a[i];
        }
        else cout<<a[i]; 
    }
    return 0;
}

by coderJT @ 2021-10-14 21:31:32

前导0的去除方式有问题。

这样的话连续两个及以上的非前导0也会被屏蔽掉,而且有数组越界的可能性。

可以打一个flag,标记是否输出过非0数字,用来判断是否需要除去0。


by lbc20070331 @ 2021-10-14 22:05:29

@coderJT 感谢大佬,我AC了


|