cqsyn @ 2021-08-22 14:56:38
请各位
字符串.
为什么前者#5 RE 后者 AC?
#include<bits/stdc++.h>
using namespace std;
string s;
bool cut[250];
int main(){
cin>>s;
for(int i=0;i<s.length()/*s.size()*/;i++){
if(s[i]==']'){
for(int j=i-1;j>=0;j--){
if(s[j]=='['&&cut[j]==0){
cut[i]=1,cut[j]=1;
break;
}else if(s[j]=='('&&cut[j]==0){
break;
}
}
}else if(s[i]==')'){
for(int j=i-1;j>=0;j--){
if(s[j]=='('&&cut[j]==0){
cut[i]=1,cut[j]=1;
break;
}else if(s[j]=='['&&cut[j]==0){
break;
}
}
}
}
for(int i=0;i<s.length()/*s.size()*/;i++){
if(cut[i]==0){
if(s[i]=='['||s[i]==']'){
printf("[]");
}else{
printf("()");
}
}else{
printf("%c",s[i]);
}
}
return 0;
}
by zhjzhmh @ 2021-08-22 14:59:02
Cu ball
我也这样错过
by xfrvq @ 2021-08-22 15:01:19
大概率是实现错误(?
毕竟两个函数效果是完全相同的
by grlljx @ 2021-08-22 15:01:37
两者实现的功能应该相同吧,没啥区别,应该是其他函数造成的。QWQ
by Eroded @ 2021-08-22 15:02:18
Cu Ball
by Andrewzdm @ 2021-08-22 15:11:40
size()
和length()
两个函数的实现效果确实是完全相同的。
为什么前者RE后者AC我不清楚,但是循环中写i<s.length()
或i<s.size()
是相当危险的,因为i
是int
类型,但size()
和length()
返回的都是size_t
类型,可以理解为unsigned int
by cqsyn @ 2021-08-22 15:18:57
@Andrewzdm
xiexie宁的建议
by cqsyn @ 2021-08-22 15:24:00
用一个
xiexie