题目大意:
寻找字符串不存在的最小子串
爆搜;
学习搜索;
AC code
#include<bits/stdc++.h>
using namespace std;
int pre[30];
set<string > str;
set<string > ssr;
void dfs(int step,int k) {
if(step == k) {
string t;
for(int i = 0; i < k; i++) {
t += char('a'+pre[i]-1);
}
str.insert(t);
return ;
}
for(int i = 1; i <= 26; i++) {
pre[step] = i;
dfs(step+1,k);
}
}
void Dfs(int step,int k) {
if(step == k) {
string t;
for(int i = 0; i < k; i++) {
t += char('a'+pre[i]-1);
}
ssr.insert(t);
return ;
}
for(int i = 1; i <= 26; i++) {
pre[step] = i;
Dfs(step+1,k);
}
}
int main() {
dfs(0,2);
Dfs(0,3);
int t;
cin >> t;
while(t--) {
int n;
cin >> n;
string s;
cin >> s;
string ch = "abcdefghijklmnopqrstuvwxyz";
int opt = 1;
for(int i = 0; i < 26; i++) {
if(s.find(ch[i]) == string::npos) {
cout << ch[i] << endl;
opt = 0;
break;
}
}
if(opt) {
for(auto i:str) {
if(s.find(i)== string::npos) {
cout << i << endl;
opt = 0;
break;
}
}
}
if(opt) {
for(auto i:ssr) {
if(s.find(i)== string::npos) {
cout << i << endl;
opt = 0;
break;
}
}
}
}
return 0;
}