hdu2572, 字符串



爆搜可过, 也可以使用时间复杂度更友好的 KMP + 二分

讲道理比赛最好过的快;

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
#define np string::npos

bool cmp(string a, string b){
    if(a.length() != b.length()) return a.length() < b.length();
    return a < b;
}

int main(){
    int t;
    string s, a, b;
    scanf("%d", &t);
    while(t--){
        cin>>s>>a>>b;
        vector<string> ans;
        int len = s.size();
        for(int i=0;i<len;i++){
            for(int j=1;i+j<=len;j++){
                string cs = s.substr(i, j);
                if(cs.find(a, 0) != np && cs.find(b, 0) != np) {
                    ans.push_back(cs);
                }
            }
        }
        if(ans.size() == 0) {
            cout<<"No"<<endl;
            continue;
        }
        sort(ans.begin(), ans.end(), cmp);
        cout<<ans[0]<<endl;
    }
    return 0;
}