zoukankan      html  css  js  c++  java
  • codevs4189字典

    沙茶

    题目大意:求某一个字符串前缀有没有在n个字符串前缀里出现过

    题解:Trie树 查询前缀有没有出现

    代码:

    //codevs4189
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #define maxn 2000008
    using namespace std;
    
    int n,q,cnt,trie[maxn][30];
    char s[maxn];
    
    void insert(){
        int root=0,len=strlen(s);
        for(int i=0;i<len;i++){
            int id=s[i]-'a';
            if(trie[root][id]==0)trie[root][id]=++cnt;
            root=trie[root][id];
        }
    }
    
    bool find(){
        int root=0,len=strlen(s);
        for(int i=0;i<len;i++){
            int id=s[i]-'a';
            if(trie[root][id]==0)return false;
            root=trie[root][id];
        }
        return true;
    }
    
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%s",s);
            insert();
        }
        scanf("%d",&q);
        for(int i=1;i<=q;i++){
            scanf("%s",s);
            if(find())printf("YES
    ");
            else printf("NO
    ");
        }
        return 0;
    }
    AC
  • 相关阅读:
    Spark基础
    flink杂记
    算法
    算法小结
    Java内存模型
    LeetCode---Backtracking && DP
    LeetCode---Sort && Segment Tree && Greedy
    LeetCode---Depth-first && Breadth-first
    LeetCode---Bit Manipulation && Design
    MD5
  • 原文地址:https://www.cnblogs.com/zzyh/p/7694299.html
Copyright © 2011-2022 走看看