Podmiana słowa w zdaniu
Treść zadania
Otrzymujesz zdanie S oraz dwa napisy A i B. Zamień wszystkie wystąpienia napisu A w zdaniu na napis B. A może być częścią dłuższych słów — zamieniamy każde wystąpienie podnapisu.
Wystąpienia szukamy od lewej do prawej. Po każdej zamianie szukanie trwa dalej za zamienionym fragmentem, więc wystąpienia nie nakładają się na siebie, a wstawiony napis B nie jest ponownie przeszukiwany. Na przykład w aaa zamiana aa na b daje ba, a w ab zamiana a na aa daje aab.
Dane wejściowe
- 1. linia: zdanie
S - 2. linia: napis
A(szukany) - 3. linia: napis
B(wstawiany)
Dane wyjściowe
Jedna linia: zdanie po zamianie.
Ograniczenia
1 ≤ |S| ≤ 10001 ≤ |A|, |B| ≤ 100(żaden z napisów nie jest pusty)
Uwagi
- Spróbuj nie używać metody
replace: przechodź po zdaniu indeksemii sprawdzaj, czy w tym miejscu zaczyna sięA(np. porównując wycinekS[i:i + len(A)]zA). Jeśli tak — dopisz do wynikuBi przeskocz olen(A)znaków; jeśli nie — dopisz bieżący znak i przejdź o jeden dalej.
Przykład
Lezy jezy na wiezy zy rzy
Lerzy jerzy na wierzy
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 25
Trudniejsze zadania na napisach: samodzielna zamiana i usuwanie fragmentów, przedrostki, kodowanie RLE, rotacje, szukanie najdłuższych powtórzeń i wspólnych fragmentów (programowanie dynamiczne) oraz sprawdzanie nawiasów za pomocą stosu. Spróbuj rozwiązywać je własnymi pętlami, bez gotowych metod w rodzaju replace czy startswith — właśnie o to w nich chodzi.
Konwencje wspólne:
- Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Program nie wypisuje komunikatów typu „Podaj napis:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę. - Każdy napis zajmuje jedną całą linię wejścia, razem ze spacjami — wczytuj go przez
input(), bezstrip()isplit(). - Wielkość liter ma znaczenie (
Aiato różne znaki), a spacja też jest znakiem. - Podnapis to ciągły fragment napisu, np.
kotjest podnapisemkotlet, aket— nie. - Pozycje znaków (indeksy) liczymy od
0, tak jak w Pythonie. - Odpowiedzi logiczne wypisuj jako
PrawdaalboFałsz(o ile zadanie nie mówi inaczej).
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomionokot ma kotlet kot pies
pies ma pieslet
Test 2
Nie uruchomionohello hello lo X
helX helX
Test 3
Nie uruchomionoaaaa aa b
bb
Test 4
Nie uruchomionoaaa aa b
ba
Test 5
Nie uruchomionoab a aa
aab
Test 6
Nie uruchomionoKot i kot kot pies
Kot i pies
Test 7
Nie uruchomionoabc x y
abc
Test 8
Nie uruchomionoabc abc XYZ
XYZ
Test 9
Nie uruchomionoala ma kota a m _
al_a kota