0886 - Secv Cons

From Bitnami MediaWiki

Cerința[edit | edit source]

Se citește un șir format din cel mult 255 caractere, litere mici ale alfabetului englez. Să se determine cea mai lungă secvență din șir formată numai din consoane.

Date de intrare[edit | edit source]

Programul citește de la tastatură un șir de caractere S.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran subșirul determinat.

Restricții și precizări[edit | edit source]

  • dacă șirul dat conține mai multe subșiruri formate numai din consoane de lungime maximă se va afișa cea mai din dreapta;
  • se garantează că în șirul dat există cel puțin o consoană;

Exemplul 1[edit | edit source]

Intrare
ukdiaehldjasmfx
Ieșire
Datele de intrare corespund restricțiilor impuse.
smfx

Exemplul 2[edit | edit source]

Intrare
aeiou
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 0886 - Secv Cons

def gaseste_sir(S):

   cel_mai_mare_sir = ""  # inițializăm cel mai mare subșir, format numai din consoane cu un șir gol
   sirul_initial = ""  # inițializăm șirul în care construim subșirul format numai din consoane
   vocale = "aeiou"  # definim lista de vocale
   for c in S[::-1]:  # iterăm prin caracterele șirului S, în ordine inversă
       if c not in vocale:  # dacă litera nu este o vocală
           sirul_initial = c + sirul_initial  # adăugăm caracterul la începutul șirului
       else:
           if len(sirul_initial) > len(cel_mai_mare_sir):  # dacă lungimea șirului este mai mare decât lungimea, cel mai mare subșir găsit până acum
               cel_mai_mare_sir = sirul_initial  # actualizăm cel mai mare subșir
           sirul_initial = ""  # resetăm șirul curent
   if len(sirul_initial) > len(cel_mai_mare_sir):  # verificăm dacă șirul este cel mai mare subșir găsit
       cel_mai_mare_sir = sirul_initial  # actualizăm cel mai mare subșir
   return cel_mai_mare_sir


if __name__ == "__main__":

   S = input("Introduceți șirul de caractere: ")
   if all(c.isalpha() and c.islower() for c in S) and len(S) <= 255 and any(c not in "aeiou" for c in S):
       # verificarea restricțiilor
       cel_mai_mare_sir = gaseste_sir(S)  # găsim cel mai mare subșir format numai din consoane
       print("Datele de intrare corespund restricțiilor impuse.")
       print("Cel mai lung subșir format numai din consoane este:", cel_mai_mare_sir)  # afișăm rezultatul
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>