这不是一道很简单的字符串吗。
这道题一些巨佬用了结构体,本蒟蒻觉得没有必要,我用的是 string
。有很多使用的函数,比如说下面我用到的 find()
函数,能简化代码。
我们可以用一个字符串去记录枚举到的字符,放入字符串,如果找到了,就把它清空,这样可以保证不会有重叠。
先讲一下 find()
这个函数的用法。
find()
会返回找到字符串的第一个下标,如果找不到,会返回
−
1
-1
−1,括号内填写需要找的字符串。
具体的解释看代码。
#include<bits/stdc++.h>
using namespace std;
string s,t[505],x;//x是用来保证搜索的字符串没有重叠
int n,cnt;
int main()
{
cin>>s>>n;
for(int i=1;i<=n;i++)//输入
cin>>t[i];
for(int i=0;i<s.size();i++) //枚举
{
x+=s[i];
for(int j=1;j<=n;j++)
if(x.find(t[j])!=string::npos)//如果能够搜索得到
{
cnt++;//答案+1
x="";//清空
}
}
cout<<cnt;
return 0;
}