题意:
依次给你n个字符串,让你找到编号最大的字符串,存在一个比他编号小的字符串且不是其子串
题解:
string中有find查找功能,
思路是用一个vector来存之前所有字符串,数组book用来表示,book[j]=1说明在当前串s[i]中找得到vec[j],否则记录当前答案
vector和book相配合使得s[i]每次find查找的串是之前彼此找不到的串,这样可以减少find次数
代码:
#include <bits/stdc++.h>
using namespace std;
#define asd cout<<" SB "<<endl;
#define ll long long
#define ull unsigned long long
#define INF 0x3f3f3f3f
int main(){
ios::sync_with_stdio(0);
int t;
cin>>t;
for(int I=0;I<t;++I){
int n;
cin>>n;
vector<string> s(n),v;
vector<bool> book(n,0);
cin>>s[0];
v.push_back(s[0]);
int ans=-1;
for(int i=1;i<n;++i){
cin>>s[i];
for(int j=0;j<v.size();++j){
if(book[j]) continue;
int pos=s[i].find(v[j]);
if(pos!=-1){
book[j]=1;
}
else{
ans=i;
}
}
v.push_back(s[i]);
}
if(ans==-1){
cout<<"Case #"<<I+1<<": "<<-1<<endl;
}
else cout<<"Case #"<<I+1<<": "<<ans+1<<endl;
}
return 0;
}