3543 - StringPushPop

De la Universitas MediaWiki

Cerința

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

Programul citește de la tastatură string-ul s, numărul natural q si cele q query-uri.

Date de ieșire

Programul va afișa pe ecran string-ul rezultat.

Restricții și precizări

  • q si lungimea inițială a lui s sunt mai mici sau egale decat 100.000

Exemplul 1

Intrare
fnic
7
1 a
3
4
1 o
2 b
5
1 p
Ieșire
pbinfo


Exemplul 1

Intrare
abc
-3
Ieșire
Date invalide: lungimea string-ului sau numărul de operații sunt invalide.

Rezolvare

#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()