题目:现有一个数量不大的String库,并且每个String 都不是很长,对给定的String,你要写一个程序算出它是库中多少个String的子串。
输入:有多个case,每个case的第一行是一个正整数N,之后N行每行一个string,代表string库,每个string由a-z 26个小写字母组成,然后是输入一个正整数M,之后M行每行一个string代表你要查询的string。
思路:循环遍历。对于库中每一条字符串,遍历所有的输入字符串,看是否包含。而后继续遍历库中所有的字符串。
定义一个数组,数组长度为输入字符串的长度,正好输出对应的每一个字符串在库中被包含的条数。
java代码如下:
import java.util.Scanner;
public class Main02 {
public static void run(String[] ku,String[] target)
{
int[] a = new int[target.length];
for(int i=0;i<ku.length;i++)
{
for(int j =0;j<target.length;j++)
{
if(ku[i].contains(target[j]))
{
a[j]++;
}
}
}
for(int i=0;i<a.length;i++)System.out.println(a[i]);
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
int N =in.nextInt();
in.nextLine();
String[] ku=new String[N];
for(int i=0;i<N;i++)
{
ku[i] = in.nextLine();
}
int M =in.nextInt();
in.nextLine();
String[] target=new String[M];
for(int j=0;j<M;j++)
{
target[j] = in.nextLine();
}
Main02 aa =new Main02();
aa.run(ku, target);
}
}
}
运行结果如下:
输入:3
aaa
aaa
baa
2
aa
ba
aaa
aaa
baa
2
aa
ba
输出:3
1
1