Description
“总之就是不太可爱!”zjb学长对字符串很有研究,在他看来有些字符显然不太可爱。某天有几个可爱的女生拿着自己的c语言程序来向zjb请教,这时zjb注意到程序里的有些变量名中有不太可爱的成分,可是他现在要专心回答问题,于是请你来编写程序帮他找出不可爱的部分。
Input
输入的第一行由若干个不同的字符组成,这些字符都被认为是不可爱的字符,从第二行开始每行都有一个字符串,代表待判断的变量名
Output
每一个变量名对应一行输出,如果这个变量名存在不可爱的字符,则输出删除不可爱字符后的新变量名,如果不存在不可爱的字符,则输出“That's so cute!”
Sample Input
abd
abcdefg
niconiconi
Sample Output
cefg
That's so cute!
Hint
保证每次输入中字符串的个数不超过100个,变量名长度不超过10000,保证数据中的变量名格式满足c程序标准
Source
SZTU Monthly 2020 Oct.
Author
DOGGOD_Q
题目解析
一个基础字符串模拟题,可以先扫一遍,进行标记和记录,根据结果在扫一遍顺便输出结果。
有人想通过左移后半字符串来补齐删除字符后的空位,这种算法的时间复杂度是O(n2),在这道题的数据范围下必然会超时。
这就说明一个道理,可以o(n)就不要更麻烦。
#include<bits/stdc++.h>
using namespace std;
string s,s2;
int main()
{
cin>>s;
while(cin>>s2)
{
int f=0,l1=s.size(),l2=s2.size();
for(int i=0;i<l2;i++)
{
for(int j=0;j<l1;j++)
if(s2[i]==s[j])f=1;
}
if(f)
{
for(int i=0;i<l2;i++)
{
int t=0;
for(int j=0;j<l1;j++)
if(s2[i]==s[j])t=1;
if(!t)cout<<s2[i];
}
cout<<endl;
}
else cout<<"That's so cute!"<<endl;
}
return 0;
}