0886 - Secv Cons: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==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 m... |
Adina Timiș (talk | contribs) No edit summary |
||
Line 21: | Line 21: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#0886 - Secv Cons | #0886 - Secv Cons | ||
def gaseste_sir(S): | def gaseste_sir(S): | ||
cel_mai_mare_sir = "" | cel_mai_mare_sir = "" # inițializăm cel mai mare subșir, format numai din consoane cu un șir gol | ||
sirul_initial = "" | sirul_initial = "" # inițializăm șirul în care construim subșirul format numai din consoane | ||
vocale = "aeiou" | vocale = "aeiou" # definim lista de vocale | ||
for c in S[::-1]: | for c in S[::-1]: # iterăm prin caracterele șirului S, în ordine inversă | ||
if c not in vocale: | if c not in vocale: # dacă litera nu este o vocală | ||
sirul_initial = c + sirul_initial | sirul_initial = c + sirul_initial # adăugăm caracterul la începutul șirului | ||
else: | else: | ||
if len(sirul_initial) > len(cel_mai_mare_sir): | 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 | cel_mai_mare_sir = sirul_initial # actualizăm cel mai mare subșir | ||
sirul_initial = "" | sirul_initial = "" # resetăm șirul curent | ||
if len(sirul_initial) > len(cel_mai_mare_sir): | 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 | cel_mai_mare_sir = sirul_initial # actualizăm cel mai mare subșir | ||
return cel_mai_mare_sir | return cel_mai_mare_sir | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
S = input("Introduceți șirul de caractere: ") | 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): | 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): | ||
cel_mai_mare_sir = gaseste_sir(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("Datele de intrare corespund restricțiilor impuse.") | ||
print("Cel mai lung subșir format numai din consoane este:", cel_mai_mare_sir) | print("Cel mai lung subșir format numai din consoane este:", cel_mai_mare_sir) # afișăm rezultatul | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 11:32, 21 May 2023
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">
- 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>