Trie树

#include <bits/stdc++.h>

using namespace std;

class TrieTree_Node {  //Tire树结点
public:
    bool flag;
    TrieTree_Node *node[26]{};

    TrieTree_Node() {
        flag = false;
        memset(node, 0, sizeof node);
    }
} root;


void Inster(string s) { //字符串插入Trie树
    TrieTree_Node *p = &root;
    for (int i = 0; i < s.length(); i++) {
        int index = s[i] - 'a';     //把小写字母a~z映射到数字的1~26,作为字典树的每一层的索引
        if (!p->node[index])
            p->node[index] = new TrieTree_Node;
        p = p->node[index];
    }
    p->flag = true;
}

bool Find(string t) {   //寻找字符串是否出现过
    TrieTree_Node *p = &root;
    for (int i = 0; i < t.length(); i++) {
        int index = t[i] - 'a';     //把小写字母a~z映射到数字的1~26,作为字典树的每一层的索引
        if (!p->node[index])
            return false;
        p = p->node[index];
    }
    return p->flag;
}

int main() {
    int n, m;
    cin >> n;
    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        Inster(s);
    }
    cin >> m;
    for (int i = 0; i < m; i++) {
        string t;
        cin >> t;
        if (Find(t))
            cout << "Yes" << endl;
        else
            cout << "No" << endl;
    }
    return 0;
}
/*
Input:
5
apple
app
balance
cat
dog
5
balance
appl
app
apple
dog

Output:
Yes
No
Yes
Yes
Yes
 */
全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务