爆搜可过, 也可以使用时间复杂度更友好的 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;
}