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

#2738 DistLungMax

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 255 de 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

Răspunsuri la întrebare

Răspuns de EmilJoaca
4

Răspuns:

#include <iostream>

#include <cstring>

using namespace std;

int main() {

   char sir[256]="", maxc[256]="";

   unsigned int maxlen=0;

   cin.getline(sir, 255);

   char *p=strtok(sir, " ");

   while(p) {

       if(strlen(p)>maxlen) {

           int ok=1;

           for(unsigned int i=0; i<strlen(p)-1;i++)

               for(unsigned int j=i+1; j<strlen(p); j++)

                   if(p[i]==p[j]) ok=0;

           if(ok==1) {

               strcpy(maxc,p);

               maxlen=strlen(p);

           }

       }

       p=strtok(NULL, " ");

   }

   if(strlen(maxc))cout<<maxc;

   else cout<<"-1";

   return 0;

}

Alte întrebări interesante