366
Cerința
Se dă un șir de caractere care conține cuvinte formate din litere mici ale alfabetului englez și separate printr-un singur spațiu. Să se determine cel mai lung cuvânt care are toate literele distincte. Dacă nu există niciun cuvânt cu toate literele distincte se va afișa -1.
Date de intrare
Programul citește de la tastatură un șir de caractere.
Date de ieșire
Programul va afișa pe ecran cuvântul determinat sau -1, conform cerinței.
Restricții și precizări
- șirul dat conține maximum
255de caractere - dacă există mai multe cuvinte cu toate literele distincte de lungime maximă se va afișa cel mai din stânga
Exemplu
Intrare
abcabcd abcdef ab
Ieșire
abcdef
#include <bits/stdc++.h>
using namespace std;
int f[1000];
char s[1000];
void init()
{
for(int i = 1 ; i <= 1000 ; ++i)
f[i]=0;
}
bool verif(int i)
{
init();
for( ; s[i]!=' ' && s[i]!='\0' ; ++i)
f[(int)s[i]]++;
for(int i = 50 ; i < 200 ; ++i)
if(f[i]>1)
return 0;
return 1;
}
int lung(int i)
{
int cnt = 0;
for( ; s[i]!=' ' && s[i]!='\0' ; ++i)
cnt++;
return cnt;
}
void afis(int i)
{
for( ; s[i] != ' ' && s[i]!='\0' ; ++i)
cout << s[i];
}
int main()
{
int ind = -1;
int max=0;
cin.getline(s , 300);
if(verif(0))
ind = 0 , max = lung(0);
int i=0;
while(s[i]!='\0')
{
if(s[i]==' ' && s[i+1]!=' ' && s[i+1]!='\0')
if(verif(i+1) && lung(i+1)>max)
ind = i+1 , max = lung(i+1);
i++;
}
if(ind!=-1)
afis(ind);
else
cout << -1;
return 0;
}
Comentarii