2738 - Dist Lung Max: Difference between revisions
Pagină nouă: == 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... |
No edit summary |
||
Line 8: | Line 8: | ||
* șirul dat conține maximum '''255''' de caractere | * ș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 | * dacă există mai multe cuvinte cu toate literele distincte de lungime maximă se va afișa cel mai din stânga | ||
== | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
: abcabcd abcdef ab | : abcabcd abcdef ab | ||
; Ieșire | ; Ieșire | ||
: Datele introduse corespund restricțiilor impuse. | |||
: abcdef | : abcdef | ||
<br> | |||
== Exemplul 2 == | |||
; Intrare | |||
: 547545//4/32 | |||
; Ieșire | |||
: Datele introduse nu corespund restricțiilor impuse. | |||
<br> | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | # 2738 Dist Lung Max | ||
# | def verificare(verificare_date): | ||
# Verificăm dacă șirul conține cel mult 255 de caractere | |||
# | if len(verificare_date) <= 255: | ||
cuvinte = | # 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 | |||
# 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 | lungime_maxima = -1 | ||
cuvant_maxim = "" | cuvant_maxim = "" | ||
for cuvant in cuvinte: | for cuvant in cuvinte: | ||
if len(cuvant) == len(set(cuvant)): | if len(cuvant) == len(set(cuvant)): | ||
if len(cuvant) > lungime_maxima: | if len(cuvant) > lungime_maxima: | ||
lungime_maxima = len(cuvant) | lungime_maxima = len(cuvant) | ||
cuvant_maxim = cuvant | cuvant_maxim = cuvant | ||
return cuvant_maxim if cuvant_maxim else -1 | 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> | </syntaxhighlight> |
Latest revision as of 14:55, 12 November 2023
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>
- 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
- 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>