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