Informatică, întrebare adresată de pav38, 8 ani în urmă

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

Răspuns de lucaciucandrei
15

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

}


pav38: Mulțumesc frumos!
lucaciucandrei: cu placere!
Alte întrebări interesante