zoukankan      html  css  js  c++  java
  • 1077 Kuchiguse

    link

    常规写法:

    #include <iostream>
    #include <vector>
    #include <cstring>
    #include <stack>
    #include <unordered_set>
    #include <queue>
    #include <cmath>
    #define LL long long
    using namespace std;
    
    int main(){
        int N;
        cin>>N;
        getchar();
        string s;
        getline(cin,s);
        int prop=s.size();
        for(int i=2;i<=N;i++){
            string s1;
            getline(cin,s1);
            prop=min(prop,(int)s1.size());
            for(int len=prop;len>=0;len--){
                if(s.substr(s.size()-len,len)==s1.substr(s1.size()-len,len)){
                    prop=len; 
                    break;
                }
            }
        }
        if(prop>0) cout<<s.substr(s.size()-prop,prop);
        else cout<<"nai";
        return 0;
    }

    用Trie:

    #include <iostream>
    #include <vector>
    #include <cstring>
    #include <stack>
    #include <unordered_set>
    #include <queue>
    #include <cmath>
    #include <unordered_map>
    #include <algorithm>
    #define LL long long
    using namespace std;
    
    struct Trie{
        unordered_map<char,Trie*> children;
    };
    Trie* root;
    
    void buildTrie(string s){
        Trie* cur=root;
        for(char c:s){
            if(cur->children.find(c)==cur->children.end()){
                cur->children[c]=new Trie();
            }
            cur=cur->children[c];
        }
    }
    
    int main(){
        int N;
        cin>>N;
        getchar();
        string s;
        root=new Trie();
        for(int i=1;i<=N;i++){
            getline(cin,s);
            reverse(s.begin(),s.end());
            buildTrie(s);
        }
        int res=0;
        Trie* cur=root;
        while(true){
            if(cur->children.size()!=1) break;
            res++;
            auto iter=cur->children.begin();
            cur=iter->second;
        }
        if(res==0) printf("nai");
        else {
            reverse(s.begin(),s.end());
            cout<<s.substr(s.size()-res,res);
        }
        return 0;
    }
  • 相关阅读:
    深入理解PHP原理之变量作用域
    深入理解PHP原理之变量分离/引用
    关于哈希表
    foreach 相关
    Scrapyd-Client的安装
    Scrapyd API的安装
    scrapyd的安装
    快手的小视频爬取
    实现单例模式的几种方式
    京东图书分布式爬虫
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/12700076.html
Copyright © 2011-2022 走看看