3543 - StringPushPop

From Bitnami MediaWiki

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>

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