Buna seara. Am nevoie de puțin ajutor la această problemă. "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." Vă mulțumesc anticipat !
Răspunsuri la întrebare
#include<iostream>
#include<cstring>
using namespace std;
int f[1000];
char s[1000];
int 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;
}