Hatsunatsu @ 2023-11-04 11:17:43
RT,栈方法。感觉思路没有什么问题,但 WA#7。
评测记录
代码如下:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
#include<cstring>
#include<cctype>
typedef long long ll;
typedef long double ld;
using namespace std;
const int MAXN=1000000005;
char a[MAXN],b[MAXN];
ll t;
void push(char n){
a[t++]=n;
}
void pop(){
t--;
}
char top(){
return a[t-1];
}
int size(){
return t;
}
bool empty(){
return t==0;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin.getline(b,MAXN);
ll i=0;
ll res=0;
if(b[0]=='0'&&b[1]=='\0'){
cout<<0;
return 0;
}
while(b[i]!='\0'){
push(b[i]);
if(top()=='0'&&i==0){
pop();
}
else if(top()=='0'&&i==1){
pop();
}
if(top()=='-'){
pop();
res=1;
}
i++;
}
while(top()=='0'){
pop();
}
if(res==1){
cout<<"-";
}
while(!empty()){
cout<<top();
pop();
}
return 0;
}
by Hatsunatsu @ 2023-11-04 11:19:14
第一次发求助帖 祭
by Regenbogen_71 @ 2023-11-04 11:22:34
@Hatsunatsu 您好,不必如此麻烦您可以参考以下代码实现反转操作,但需要自行实现判定负数
inline int rev(int x,int res = 0) {
while (x)res = res * 10 + x % 10, x /= 10;
return res;
}
by Hatsunatsu @ 2023-11-04 11:25:01
@Regenbogen_71 蟹蟹,但我还是想找出我的方法存在的问题qwq
by _QyGyQ_ @ 2023-11-04 11:32:43
if(top()=='0'&&i==0){
pop();
}
else if(top()=='0'&&i==1){
pop();
}
您好,请问这个是干嘛的?既然你后面已经去过前导0,这两行就没有作用,去掉就AC了。 @Hatsunatsu
by Regenbogen_71 @ 2023-11-04 11:34:40
@Hatsunatsu 您好,您的代码在if(top()=='0'&&i==0){ pop(); } else if(top()=='0'&&i==1){ pop(); }
出了问题,您删除了非前导零,导致您的输出少了零
by _QyGyQ_ @ 2023-11-04 11:36:32
@Regenbogen_71 怎么做了这么多紫题T^T
by Hatsunatsu @ 2023-11-04 11:37:06
加后面去掉前导
谢谢你!
@meng_cen
by _Regenbogen_ @ 2023-11-04 11:38:29
@meng_cen 您猜
by Hatsunatsu @ 2023-11-04 11:38:51
AC 了,谢谢你!@Regenbogen_71
by _QyGyQ_ @ 2023-11-04 11:45:37
6,原来开小号(wwwwwwwwwwwwww