题目描述
Aice想要计算他那N只猫的名字的价值每只猫的名字由不超过1000个大小写字母构成,没有一个名字是空字体串。Aice有一张"价值字符串表”上面有 M个代表价值的字符事,每个字符中由不超过30个大小写字母构成,同样不存在空字符串,一个猫的名字蕴含多少个价值字符串,这个名字就有多少价值。所谓“蕴含”, 是指某个能量字符串的所有字符都在名字串中按顺序出现(不-定-一个紧接着一个) .所有的大写字母和小写字母都是等价的。比如,在贝茜的名字"Bessie"里,蕴含有"Be" “si””“EE"以及“Es"等等字符串,但不蕴含“Ls"或"eB”.请帮Alice计算他的猫的名字的价值。
输入
输人的第一行是两个整数N M
接下来N行,每行一个字符串表示猫的名字,
接下来M行,每行一个价值字符串
1 <=N<= 1000
1 <= M <=100
输出
输出每只猫名字蕴含多少个价值字符串,
样例输入
5 3
Bessie
Jonathan
Montgomery
Alicia
Angola
Se
nGo
oNt
样例输出
1
1
2
0
1
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n=cin.nextInt();
int m=cin.nextInt();
String[] a=new String[n];
for(int i=0;i<n;i++)
a[i]=cin.next().toLowerCase();
String[] b=new String[m];
for(int i=0;i<m;i++)
b[i]=cin.next().toLowerCase();
for(int i=0;i<n;i++){
int ans=0;
int[] index=new int[m];
boolean[] flag=new boolean[m];
for(int j=0;j<a[i].length();j++){
for(int k=0;k<m;k++){
if(!flag[k]&&b[k].charAt(index[k])==a[i].charAt(j)){
index[k]++;
if(index[k]==b[k].length()){
index[k]=0;
++ans;
flag[k]=true;
}
}
}
}
System.out.println(ans);
}
}
}