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ăspuns :

#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;

}