我刚开始是这样写的:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;cin>>a>>b;
int flag=1;
for(int i=0;i<b.size();i++)
{
if(a.find(b[i])==string::npos)
{
flag=0;
}
}
if(flag)cout<<"True";
else cout<<"False";
return 0;
}
下面这段代码AC了:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;cin>>a>>b;
string temp;
for(int i=0;i<a.size();i++)
{
if(a[i]!='!')
temp+=a[i];
}
if(temp.find(b)!=string::npos)
cout<<"True";
else cout<<"False";
return 0;
}
原因是因为第一段代码调用find()函数太多了,find()函数的时间复杂度是线性的,而下面的代码只调用了一次find()函数,因此效率更高。