AC代码:
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
struct Trie //字典树结构体
{
Trie * next[26];
int num;
Trie()
{
for (int i = 0; i < 26; i++)
{
next[i] = NULL;
}
num = 0;
}
};
Trie root; //根节点
void Insert(string s) //将字符串插入到字典树里
{
Trie *p = &root;
for (int i = 0; i < s.size(); i++)
{
if (p->next[s[i] - 'a'] == NULL) //没有就插入新的树
{
p->next[s[i] - 'a'] = new Trie;
}
p = p->next[s[i] - 'a']; //有就到下一个结点
p->num++;
}
}
int Find(string s) //找到该字符串
{
Trie *p = &root;
for (int i = 0; i < s.size(); i++)
{
if (p->next[s[i] - 'a'] == NULL)
{
return 0;
}
p = p->next[s[i] - 'a'];
}
return p->num;
}
int main()
{
string s;
while (getline(cin, s))
{
if (s.size() == 0)break; //输入空行时
Insert(s);
}
while (cin >> s)
{
cout << Find(s) << endl;
}
system("pause");
return 0;
}