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;
    }
  • 相关阅读:
    4、CreateJS介绍-PreLoadJS
    3、CreateJS介绍-SoundJS
    洛谷 题解 UVA1151 【买还是建 Buy or Build】
    算法详解之拓扑排序
    算法详解之缩点
    洛谷 题解 P3627 【[APIO2009]抢掠计划】
    板娘脚本
    2019.6.20义乌测试赛自我成绩分析
    洛谷 题解 P1225 【黑白棋游戏】
    洛谷 题解 P1908 【逆序对】
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/12700076.html
Copyright © 2011-2022 走看看