有多个case, 每个case第一行是一个正整数N,之后N行每行一个string,代表string库, 每个string由a-z 26个小写字母组成,然后是一个正整数M,之后M行每行一个string代表你所要询问的string。
每个case输出M行,每行一个正整数,代表当前询问的string是库中多少个string的子串
3 aaa aaa baa 2 aa ba 1 a 1 a
3 1 1
package main; import java.util.*; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); //-------------敲重点------------- while(input.hasNext()){ //-------------往上看------------- int N = input.nextInt(); ArrayList<String> lib = new ArrayList<>(); for (int i = 0; i < N; i++){ lib.add(input.next()); } int M = input.nextInt(); ArrayList<String> res = new ArrayList<>(); for (int i = 0; i < M; i++){ String str = input.next(); res.add(str); } for (int i = 0; i < res.size(); i++){ int num = 0; for (int j = 0; j < lib.size(); j++){ if(lib.get(j).contains(res.get(i))){ num++; } } System.out.println(num); } } } }
#include <string> #include <vector> #include <iostream> using namespace std; inline int getResult(const vector<string>& vec, const string& str) { int count = 0; for(const auto& it : vec) { if(it.find(str) != string::npos) ++count; } return count; } int main() { int N = 0; while(cin >> N) { vector<string> vec; vec.reserve(N); for(int i = 0; i < N; ++i) { string str; cin>>str; vec.push_back(str); } int M = 0; cin>>M; for(int i = 0; i < M;++i) { string str; cin>>str; auto res = getResult(vec,str); cout<<res<<endl; } } return 0; }