问题标题: 我真的不是来捣乱的,我是说,这题为什么超时了?

0
0
已解决
杜智宸
杜智宸
中级光能
中级光能

科丁乐2019市赛模拟赛的题

3、文字游戏

(word.cpp)

【问题描述】

"消消乐"的游戏很多同学都玩过,编程大神小科突发奇想设计了一个文字游戏,游戏是这样的:

刚开始随机给出一个长度不超过 10000 字符串 S,然后再随机给出一个长度不超过 50 的字符串 T,首

先从左到右找到第一个出现的字符串 T,然后把这个字符串删掉,接下来在删除后的字符串中再继续

找最左边的字符串 T 并删除掉,如此循环下去直到字符串 S 中没有字符串 T 时游戏结束,输出最终的

剩下的字符串 S。

请你根据小科的设计来完成这个游戏吧。

【输入格式】

输入文件名为 word.in

输入文件共包含两行:

第一行,一个字符串 S,字符串的长度不超过 10000 且只包含小写字母

第二行,一个字符串 T,字符串的长度不超过 50 且只包含小写字母

【输出格式】

输出文件名为 word.out

输出文件只包含一行:一个字符串,表示最终剩下的字符串 S

【输入输出样例 1】

word.in

word.out

sohappyhahappysohap

hap

sopyyso

【输入输出样例 1 说明】

游戏开始时给出的字符串 S 是 sohappyhahappysohap,字符串 T 是 hap

第一次在字符串“sohappyhahappysohap”中从左到右找到“hap”并进行删除,删除后的字符串

是“sopyhahappysohap” 第二次在字符串“sopyhahappysohap”从左到右找到“hap”并进行删除,删除后的字符串是

“sopyhapysohap” 第三次在字符串“sopyhapysohap”从左到右找到“hap”并进行删除,删除后的字符串是

“sopyysohap” 第四次在字符串“sopyysohap”从左到右找到“hap”并进行删除,删除后的字符串是“sopyyso”

此时字符串 S 为“sopyyso”,不包含字符串 T“hap”,游戏结束,输出最终的字符串 S

string s,t;
int main(){
    //freopen("mine.in","r",stdin);
    //freopen("mine.out","w",stdout);
    cin>>s>>t;
    int p;
    while(s.find(t)!=string::npos){
        p=s.find(t);
        s.erase(p,t.size());
    }
    cout<<s;
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

 


0
我要回答