2132 - Min Subsir
De la Universitas MediaWiki
Se consideră un șir de caractere format din litere mici ale alfabetului englez.
Cerinţa
Să se determine lungimea minimă a unei secvențe care conține toate literele întâlnite în șirul inițial.
Date de intrare
Programul citește de la tastatură șirul de caractere.
Date de ieşire
Programul va afișa pe ecran lungimea secvențele cerute.
Restricții și precizări
- 1 ⩽ lungime sir ⩽ 10000
Exemplu
- Intrare
- aadcaabcbacadca
- Ieșire
- 5
Explicație
Sunt folosite literele: a,b,c,d.
Secvențe de lungime minimă care folosesc toate literele: dcaab, bacad.
Rezolvare
def lungime_minima(s):
# Creăm un set pentru a stoca toate literele unice din șir
litere_unice = set(s)
# Inițializăm lungimea minimă cu lungimea șirului
lungime_min = len(s)
# Parcurgem șirul cu o fereastră de caractere
for i in range(len(s)):
for j in range(i, len(s)):
# Dacă fereastra conține toate literele unice, actualizăm lungimea minimă
if set(s[i:j+1]) == litere_unice:
lungime_min = min(lungime_min, j-i+1)
# Returnăm lungimea minimă
return lungime_min
s = input()
print(lungime_minima(s))