Autocomplete is a program function that enables inputting the text (in editors, command line shells, browsers etc.) completing the text by its inputted part. Vasya is busy working on a new browser called 'BERowser'. He happens to be working on the autocomplete function in the address line at this very moment. A list consisting of n last visited by the user pages and the inputted part s are known. Your task is to complete s to make it an address of one of the pages from the list. You have to find the lexicographically smallest address having a prefix s.
The first line contains the s line which is the inputted part. The second line contains an integer n (1 ≤ n ≤ 100) which is the number of visited pages. Then follow n lines which are the visited pages, one on each line. All the lines have lengths of from 1 to 100 symbols inclusively and consist of lowercase Latin letters only.
If s is not the beginning of any of n addresses of the visited pages, print s. Otherwise, print the lexicographically minimal address of one of the visited pages starting from s.
The lexicographical order is the order of words in a dictionary. The lexicographical comparison of lines is realized by the '<' operator in the modern programming languages.
next 2 nextpermutation nextelement
nextelement
find 4 find findfirstof findit fand
find
find 4 fondfind fondfirstof fondit fand
find
题意 给一个字符串s(为前缀字符),给定一个n,输出n个字符串,若字符前缀为s,则输出有前缀s的字典序的最小值,若一个也不存在,则输出s
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int M=110;
char s[M][M];
char a[M];
int f[M],t[M];
char b[M];
int main()
{
int n;
while(cin>>a)
{
cin>>n;
int c=0;
memset(f,0,sizeof(f));
memset(t,0,sizeof(t));
int len=strlen(a);
for(int i=0;i<n;i++)
{
cin>>s[i];
int len1=strlen(s[i]);
if(len1<len)
{
t[i]=1;
continue;
}
for(int j=0;j<len;j++)
{
if(a[j]!=s[i][j])
{
t[i]=1;
break;
}
}
if(t[i]==0)
{
f[i]=1;
memset(b,0,sizeof(b));
strcpy(b,s[i]);
c++;
}
}
if(c==0)
cout<<a<<endl;
else
{
for(int i=0;i<n;i++)
{
if(f[i]==1)
{
if(strcmp(b,s[i])>0)
{
memset(b,0,sizeof(b));
strcpy(b,s[i]);
}
}
}
cout<<b<<endl;
}
}
return 0;
}