2738 - Dist Lung Max

From Bitnami MediaWiki

Cerinţa[edit | edit source]

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[edit | edit source]

Programul citește de la tastatură un șir de caractere.

Date de ieşire[edit | edit source]

Programul va afișa pe ecran cuvântul determinat sau -1, conform cerinței.

Restricții și precizări[edit | edit source]

  • ș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

Exemplul 1[edit | edit source]

Intrare
abcabcd abcdef ab
Ieșire
Datele introduse corespund restricțiilor impuse.
abcdef


Exemplul 2[edit | edit source]

Intrare
547545//4/32
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 2738 Dist Lung Max

def verificare(verificare_date):

   # Verificăm dacă șirul conține cel mult 255 de caractere
   if len(verificare_date) <= 255:
       # Verificăm dacă șirul conține doar litere mici ale alfabetului englez și spații
       if not all(c.islower() or c.isspace() for c in verificare_date):
           # Dacă șirul conține alte caractere, ridicăm o excepție
           raise ValueError
       # Dacă șirul este valid, îl returnăm
       return verificare_date
   else:
       # Dacă șirul nu este valid, ridicăm o excepție
       raise ValueError


  1. Funcția cel_mai_lung_cuvant_cu_litere_distincte determină cel mai lung cuvânt cu litere distincte din șir

def cel_mai_lung_cuvant_cu_litere_distincte(s_lung):

   cuvinte = s_lung.split()
   lungime_maxima = -1
   cuvant_maxim = ""
   for cuvant in cuvinte:
       if len(cuvant) == len(set(cuvant)):
           if len(cuvant) > lungime_maxima:
               lungime_maxima = len(cuvant)
               cuvant_maxim = cuvant
   return cuvant_maxim if cuvant_maxim else -1


if __name__ == "__main__":

   try:
       # Citim șirul de la utilizator
       s = input("Introduceti sirul de caractere: ")
       # Validăm șirul
       s = verificare(s)
       # Dacă șirul este valid, determinăm cel mai lung cuvânt cu litere distincte și afișăm rezultatul
       print("Datele introduse corespund restricțiilor impuse.")
       print(cel_mai_lung_cuvant_cu_litere_distincte(s))
   except ValueError:
       # Dacă șirul nu este valid, afișăm un singur mesaj de eroare
       print("Datele introduse nu corespund restricțiilor impuse..")

</syntaxhighlight>