题目描述
小核桃的键盘不幸损坏了!然而,作为信息学的热衷者,小核桃仍需进行题解的编写。
为了给小核桃的题解撰写提供便利,星宇博士贴心地送给小核桃一个词典!
当小核桃碰到无法顺利打出的单词时,他便会把这个单词存进词典,待到再次碰到该单词,就能够调用词典中的内容。如此一来,小核桃就不会感到焦急万分啦。
现在,已知小核桃键盘坏掉的按键,以及小核桃即将要撰写的文章,您能算出最后词典里的单词数量吗?
输入格式
第一行是一个整数 n ,代表坏掉的按键数量。
第二行由 n 个字符组成,表示坏掉的按键(以空格分隔)。
第三行是一个整数 m ,代表文章中的单词数量。
第四行是 m 个字符串,表示文章里的单词(单词之间以空格隔开)。
输出格式
第一行输出一个整数,用以表示最终词典里的词数。
示例输入 1
2
t y
11
i can not use the two keys between r and u
示例输出 1
5
示例输入 2
5
a e i o u
10
before is before and now is now dishes practiced more
示例输出 2
7
提示
坏掉的按键仅仅是 26 位字母,并且不区分大小写;在本题中,所有的单词均由小写字母构成,而且每个单词的长度不超过 15 。
数据规模与约束
对于 60% 的数据:1 ≤ m ≤ 100
对于 100% 的数据:1 ≤ m ≤ 1000,0 ≤ n ≤ 26
我的代码喵:
#include<bits/stdc++.h>
using namespace std;
int n,m,cnt;
string s[10010],a[100];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cin>>m;
for(int i=1;i<=m;i++){
int tmp=0;
string ss;
cin>>ss;
for(int j=1;j<=n;j++){
if(ss.find(a[j])==-1){
tmp=1;
break;
}
}
if(tmp){
continue;
}
for(int j=1;j<=cnt;j++){
if(s[j]==ss){
tmp=1;
break;
}
}
if(tmp){
continue;
}
cnt++;
s[cnt]=ss;
}
cout<<cnt;
return 0;
}