0886 - Secv Cons

From Bitnami MediaWiki
Revision as of 11:32, 21 May 2023 by Adina Timiș (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

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

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

Date de ieșire

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

Restricții și precizări

  • 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

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

Exemplul 2

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

Rezolvare

<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>