0846 - Dubluri: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dă un șir de caractere ce conține doar litere mici ale alfabetului englez. Să se afișeze cel mai lung subșir care apare de cel puțin două ori în șirul dat. == Date de intrare == Programul citește de la tastatură șirul dat. == Date de ieșire == Programul va afișa pe ecran cel mai lung subșir cu cel puțin două apariții. == Restricţii şi precizări == * șirul dat are cel mult '''255''' caractere * dacă există mai multe subșiruri de lung...
 
Line 9: Line 9:
* dacă există mai multe subșiruri de lungime maximă care apar de cel puțin două ori, se va afișa primul în ordine lexicografică.
* dacă există mai multe subșiruri de lungime maximă care apar de cel puțin două ori, se va afișa primul în ordine lexicografică.
* pentru toate datele de test există cel puțin un subșir din cel puțin două caractere, care se repetă
* pentru toate datele de test există cel puțin un subșir din cel puțin două caractere, care se repetă
== Exemplu 1 ==
== Exemplul 1 ==
; Intrare
; Intrare
  cbddccdaaddccaaddbccbbdbddd
  cbddccdaaddccaaddbccbbdbddd
Line 16: Line 16:
  aadd
  aadd
<br>
<br>
== Exemplu 2 ==
== Exemplu 2 ==
; Intrare
; Intrare

Revision as of 17:14, 25 December 2023

Cerinţa

Se dă un șir de caractere ce conține doar litere mici ale alfabetului englez. Să se afișeze cel mai lung subșir care apare de cel puțin două ori în șirul dat.

Date de intrare

Programul citește de la tastatură șirul dat.

Date de ieșire

Programul va afișa pe ecran cel mai lung subșir cu cel puțin două apariții.

Restricţii şi precizări

  • șirul dat are cel mult 255 caractere
  • dacă există mai multe subșiruri de lungime maximă care apar de cel puțin două ori, se va afișa primul în ordine lexicografică.
  • pentru toate datele de test există cel puțin un subșir din cel puțin două caractere, care se repetă

Exemplul 1

Intrare
cbddccdaaddccaaddbccbbdbddd
Iesire
Datele de intrare corespund restrictiilor impuse
aadd


Exemplu 2

Intrare
Bunaziua
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

<syntaxhighlight lang="python" line> def main():

   # Citirea șirului de caractere de la tastatură
   sir = input().strip()
   # Verifică dacă șirul respectă restricțiile
   if len(sir) > 255:
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   if any(not caracter.islower() for caracter in sir):
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   print("Datele de intrare corespund restrictiilor impuse")
   # Căutarea celui mai lung subșir care apare de cel puțin două ori
   lungime_maxima = 0
   subșir_maxim = 
   for i in range(len(sir)):
       for j in range(i+2, len(sir)+1):
           subșir = sir[i:j]
           if sir.count(subșir) >= 2 and len(subșir) > lungime_maxima:
               lungime_maxima = len(subșir)
               subșir_maxim = subșir
           elif len(subșir) == lungime_maxima and subșir < subșir_maxim:
               subșir_maxim = subșir
   # Afișarea subșirului obținut
   print(subșir_maxim)

if __name__ == "__main__":

   main()

</syntaxhighlight>