NC50350. Keywords Search
描述
输入描述
第一行一个整数T,表示数据组数;
对于每组数据,第一行一个整数n,接下去n行表示n个单词,最后一行输入一个字符串,表示文章。
输出描述
对于每组数据,输出一个数,表示文中出现了多少个待查询的单词。
示例1
输入:
1 5 she he say shr her yasherhs
输出:
3
Java 解法, 执行用时: 417ms, 内存消耗: 19896K, 提交时间: 2023-02-23 11:12:43
import java.util.*; /** * @author 11214 * @since 2023/2/23 9:33 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while (t-- > 0) { HashMap<String, Integer> candidates = new HashMap<>(); int n = sc.nextInt(); for (int i = 0; i < n; i++) { String s = sc.next().toLowerCase(); candidates.put(s, candidates.getOrDefault(s, 0) + 1); } int ans = 0; String document = sc.next().toLowerCase(); for (Map.Entry<String, Integer> kv : candidates.entrySet()) { if (document.contains(kv.getKey())) { ans += kv.getValue(); } } System.out.println(ans); } } }
C++(clang++ 11.0.1) 解法, 执行用时: 90ms, 内存消耗: 5612K, 提交时间: 2023-02-23 11:09:48
#include <bits/stdc++.h> using namespace std; int main(){ int T,n,ans[100001]; string wz; string dc[100001]; cin >> T; for (int i = 1;i <= T;i++){ cin >> n; for (int j = 1;j <= n;j++){ cin >> dc[j]; } cin >> wz; for (int j = 1;j <= n;j++){ if (wz.find(dc[j]) <= 1000000){ // 重点! ans[i]++; } } } for (int i = 1;i <= T;i++){ cout << ans[i] << endl; } }