logo

Python – Înlocuiește toate aparițiile unui subșir într-un șir

Uneori, în timp ce lucrăm cu șiruri Python, putem avea o problemă în care trebuie să înlocuim toate aparițiile unui subșir cu altele.

Intrare : test_str = geeksforgeeks s1 = geeks s2 = abcd
Ieșire: test_str = abcdforabcd Explicație: Înlocuim toate aparițiile lui s1 cu s2 în test_str.

Intrare : test_str = geeksforgeeks s1 = for s2 = abcd
Ieșire: test_str = geeksabcdgeeks



Abordarea 1

Putem folosi funcția încorporată înlocuiți prezent în python3 pentru a înlocui toate aparițiile subșirului.

Implementare folosind funcția încorporată: -

Python3


vârsta salman khan



#Python has inbuilt function replace to replace all occurrences of substring.> input_string>=> 'geeksforgeeks'> s1>=> 'geeks'> s2>=> 'abcd'> input_string>=> input_string.replace(s1, s2)> print>(input_string)>

>

>

Ieșire

abcdforabcd>

Complexitatea timpului: Pe)
Spațiu auxiliar: Pe)

Abordarea 2:

Se utilizează împărțirea șirului după subșir și apoi înlocuirea cu noua funcție string.split().

Python3




#code for replacing all occurrences of substring s1 with new string s2> test_str>=>'geeksforgeeks'> s1>=>'geeks'> s2>=>'abcd'> #string split by substring> s>=>test_str.split(s1)> new_str>=>''> for> i>in> s:> >if>(i>=>=>''):> >new_str>+>=>s2> >else>:> >new_str>+>=>i> #printing the replaced string> print>(new_str)> #contributed by Bhavya Koganti>

>

>

Ieșire

fișier de citire bash
abcdforabcd>

Complexitatea timpului și spațiului pentru toate metodele sunt aceleași:

Complexitatea timpului: Pe)

Spațiu auxiliar: Pe)

Metoda 3: O altă abordare pentru a înlocui toate aparițiile unui subșir într-un șir este de a folosi re.sub() funcția din modulul re din python.

Python3




import> re> def> replace_substring(test_str, s1, s2):> ># Replacing all occurrences of substring s1 with s2> >test_str>=> re.sub(s1, s2, test_str)> >return> test_str> # test> test_str>=> 'geeksforgeeks'> s1>=> 'geeks'> s2>=> 'abcd'> print>(replace_substring(test_str, s1, s2))>

>

ce este oracolul

>

Ieșire

abcdforabcd>

Complexitatea timpului: O(n), unde n este lungimea șirului de intrare. Acest lucru se datorează faptului că funcția re.sub() iterează prin întregul șir de intrare și efectuează o potrivire a expresiei regulate pe fiecare caracter pentru a găsi toate aparițiile subșirului. Numărul de iterații este direct proporțional cu lungimea șirului de intrare.
Spațiu auxiliar: Nou

Metoda 4: Folosind o iterație simplă

Ideea din spatele acestei abordări este de a repeta prin șirul de intrare caracter cu caracter și de a verifica dacă fiecare subșir de lungime m se potrivește cu subșirul pe care vrem să-l înlocuim. Dacă se întâmplă, adăugăm subșirul de înlocuire la rezultat și mutăm indicatorul înainte cu m caractere. Dacă nu se potrivește, adăugăm caracterul curent la rezultat și deplasăm indicatorul înainte cu 1 caracter.

Python3




def> replace_substring(test_str, s1, s2):> ># Initialize an empty string to store the result> >result>=> ''> ># Initialize a variable to keep track of our position in the string> >i>=> 0> ># Loop through the string one character at a time> >while> i <>len>(test_str):> ># Check if the current substring matches the substring we want to replace> >if> test_str[i:i>+>len>(s1)]>=>=> s1:> ># If it does, add the replacement substring to the result and move the pointer forward> >result>+>=> s2> >i>+>=> len>(s1)> >else>:> ># If it doesn't, add the current character to the result and move the pointer forward> >result>+>=> test_str[i]> >i>+>=> 1> ># Return the final result> >return> result> # test> test_str>=> 'geeksforgeeks'> s1>=> 'geeks'> s2>=> 'abcd'> print>(replace_substring(test_str, s1, s2))>

>

>

Ieșire

abcdforabcd>

Complexitatea timpului: O(nm), unde n este lungimea șirului de intrare și m este lungimea subșirului de înlocuit.
Spatiu auxiliar: O(n), deoarece creăm un șir nou pentru a stoca rezultatul.