NC50992. 前缀统计
描述
输入描述
第一行两个整数N,M。接下来N行每行一个字符串Si。接下来M行每行一个字符串表示询问。
输出描述
对于每个询问,输出一个整数表示答案
示例1
输入:
3 2 ab bc abc abc efg
输出:
2 0
Python3 解法, 执行用时: 1082ms, 内存消耗: 11264K, 提交时间: 2023-03-07 14:02:44
dit = {} n, m = map(int, input().split()) for i in range(n): s = input() if s not in dit: dit[s] = 1 else: dit[s] += 1 for i in range(m): s = input() res = 0 for i in range(len(s)+1): stmp = s[0:i] if stmp in dit: res += dit[stmp] print(res)
C++ 解法, 执行用时: 351ms, 内存消耗: 10672K, 提交时间: 2022-01-24 17:02:38
#include<bits/stdc++.h> using namespace std; int main() { int n,m,i; cin>>n>>m; string s; map<string, int>q;//映射 while(n--) { cin>>s; q[s]++; } while(m--) { int sum=0; cin>>s; string a; for(i=0; i<s.size(); i++) { a=a+s[i]; sum=sum+q[a]; } cout<<sum<<endl; } return 0; }