👤

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

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;

}