3543 - StringPushPop
Cerința[edit | edit source]
Se dă un string s. Asupra acestuia, se aplică 5 tipuri de operații:
- (1, c) – se adaugă caracterul c la începutul string-ului
- (2, c) – se adaugă caracterul c la finalul string-ului
- (3) – se șterge primul caracter al string-ului
- (4) – se șterge ultimul caracter al string-ului
- (5) – string-ul se va transforma în răsturnatul său
Să se afișeze string-ul rezultat după cele q operații.
Date de intrare[edit | edit source]
Programul citește de la tastatură string-ul s, numărul natural q si cele q query-uri.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran string-ul rezultat.
Restricții și precizări[edit | edit source]
- q si lungimea inițială a lui s sunt mai mici sau egale decat 100.000
Exemplul 1[edit | edit source]
- Intrare
- fnic
- 7
- 1 a
- 3
- 4
- 1 o
- 2 b
- 5
- 1 p
- Ieșire
- pbinfo
Exemplul 1[edit | edit source]
- Intrare
- abc
- -3
- Ieșire
- Date invalide: lungimea string-ului sau numărul de operații sunt invalide.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3543 StringPushPop
def verifica_date_intrare(s, q):
if len(s) > 100000 or q <= 0: return False return True
def main():
s = input("Introduceți string-ul s: ").strip() # citim string-ul s de la tastatură și afișăm un mesaj de prompt q = input("Introduceți numărul de operații q: ").strip() # citim numărul de operații q de la tastatură și îl convertim la întreg
# Verificăm datele de intrare if not verifica_date_intrare(s, int(q)): print("Date invalide: lungimea string-ului sau numărul de operații sunt invalide.") return
for _ in range(int(q)): op = input("Introduceți operația și caracterul asociat (exemplu: '1 a'): ").strip().split() # citim operația și caracterul asociat cod = int(op[0]) if cod == 1: c = op[1] s = c + s # adăugăm caracterul la începutul string-ului elif cod == 2: c = op[1] s = s + c # adăugăm caracterul la finalul string-ului elif cod == 3: s = s[1:] # ștergem primul caracter al string-ului elif cod == 4: s = s[:-1] # ștergem ultimul caracter al string-ului elif cod == 5: s = s[::-1] # inversăm string-ul
print(s) # afișăm string-ul rezultat
if __name__ == "__main__":
main()
</syntaxhighlight>