求条
查看原帖
求条
909957
LITFLYR楼主2024/8/20 10:43
#include<bits/stdc++.h>
using namespace std;
int ch[100005][70],cnt,num[100005];
int n,m;
string s,t;
int cha(char x){
	if(x>='0'&&x<='9'){
		return x-'0';
	}
	else if(x>='a'&&x<='z'){
		return x-'a'+10;
	}
	else if(x>='A'&&x<='Z'){
		return x-'A'+36;
	}
}
int find(string s){
	int p=0,l=s.length()-1;
	int ans=0;
	for(int i=1;i<=l;i++){
		if(ch[p][cha(s[i])]!=0) ans++;
		p=ch[p][cha(s[i])];
	}
	return ans;
}
int main(){
	cin >> n >> m;
	for(int i=1;i<=n;i++){
		cin >> s;
		s=' '+s;
		int p=0,l=s.length()-1;
		for(int j=1;j<=l;j++){
			if(ch[p][cha(s[j])]==0) ch[p][cha(s[j])]=++cnt;
		    p=ch[p][cha(s[j])];
		    if(j==l) num[p]++;
		}
	}
	for(int i=1;i<=m;i++){
		cin >> t;
		t=' '+t;
		cout << find(t) << endl;
	}
	return 0;
}
2024/8/20 10:43
加载中...