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