我有一个疑问

P1241 括号序列

cqsyn @ 2021-08-22 14:56:38

请各位dalao解答一下一个蒟蒻的疑问:

字符串.size() 与 字符串.length() 有什么区别。

为什么前者#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()是相当危险的,因为iint类型,但size()length()返回的都是size_t类型,可以理解为unsigned int


by cqsyn @ 2021-08-22 15:18:57

@Andrewzdm

xiexie宁的建议


by cqsyn @ 2021-08-22 15:24:00

用一个 int 存下 s.size() 也可以AC。

xiexie dalao


|