2132 - Min Subsir: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: 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 les; lungime sir ⩽ 10000 == Exemplu == ; Intrare : aadcaabcbacad...
 
mNo edit summary
Line 7: Line 7:
Programul va afișa pe ecran lungimea secvențele cerute.
Programul va afișa pe ecran lungimea secvențele cerute.
== Restricții și precizări ==
== Restricții și precizări ==
* 1 les; lungime sir ⩽ 10000
* 1 ⩽ lungime sir ⩽ 10000
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare

Revision as of 21:52, 4 November 2023

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

<syntaxhighlight lang="python" line> 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))

</syntaxhighlight>