2132 - Min Subsir
Se consideră un șir de caractere format din litere mici ale alfabetului englez.
Cerinţa[edit | edit source]
Să se determine lungimea minimă a unei secvențe care conține toate literele întâlnite în șirul inițial.
Date de intrare[edit | edit source]
Programul citește de la tastatură șirul de caractere.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran lungimea secvențele cerute.
Restricții și precizări[edit | edit source]
- 1 ⩽ lungime sir ⩽ 10000
Exemplul 1[edit | edit source]
- Intrare
- aadcaabcbacadca
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 5
Exemplul 2[edit | edit source]
- Intrare
- 54454534
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Explicație[edit | edit source]
Sunt folosite literele: a,b,c,d.
Secvențe de lungime minimă care folosesc toate literele: dcaab, bacad.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 2132 -Min Subsir
def verificare(verif_car):
# Verificăm dacă lungimea șirului este în intervalul [1, 10000] if 1 <= len(verif_car) <= 10000: # Verificăm dacă șirul conține doar litere mici ale alfabetului englez if not all(c.islower() for c in verif_car if not c.isspace()): # Dacă șirul conține alte caractere, ridicăm o excepție raise ValueError # Dacă șirul este valid, îl returnăm return verif_car else: # Dacă șirul nu este valid, ridicăm o excepție raise ValueError
- Funcția lungime_minima determină lungimea minim
def lungime_minima(min_lung):
litere_unice = set(min_lung) lungime_min = len(min_lung) for i in range(len(min_lung)): for j in range(i, len(min_lung)): if set(min_lung[i:j+1]) == litere_unice: lungime_min = min(lungime_min, j-i+1) return lungime_min
if __name__ == "__main__":
try: # Citim șirul de la utilizator s = input("Introduceti sirul de caractere: ") # Validăm șirul s = verificare(s) print("Datele introduse corespund restricțiilor impuse.") print(lungime_minima(s)) except ValueError: # Dacă șirul nu este valid, afișăm un mesaj de eroare print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>