logo

Python – Erstatt alle forekomster av en delstreng i en streng

Noen ganger, mens vi jobber med Python-strenger, kan vi ha et problem der vi må erstatte alle forekomster av en delstreng med andre.

Inndata: test_str = geeksforgeeks s1 = nerder s2 = abcd
Utgang: test_str = abcdforabcd Forklaring: Vi erstatter alle forekomster av s1 med s2 i test_str.

Inndata: test_str = geeksforgeeks s1 = for s2 = abcd
Utgang: test_str = geeksabcdgeeks



Tilnærming 1

Vi kan bruke den innebygde funksjonen erstatte tilstede i python3 for å erstatte alle forekomster av understreng.

Implementering ved hjelp av den innebygde funksjonen:-

Python3




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

hyllehunder
>

>

Produksjon

abcdforabcd>

Tidskompleksitet: På)
Hjelpeplass: På)

Tilnærming 2:

Splitting av strengen etter understreng og deretter erstatning med den nye string.split()-funksjonen brukes.

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>

>

>

Produksjon

abcdforabcd>

Tids- og romkompleksiteten for alle metodene er den samme:

Tidskompleksitet: På)

Hjelpeplass: På)

Metode 3: En annen tilnærming for å erstatte alle forekomster av en understreng i en streng er å bruke re.sub() funksjon fra re-modulen i 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))>

>

>

Produksjon

abcdforabcd>

Tidskompleksitet: O(n), hvor n er lengden på inndatastrengen. Dette er fordi re.sub()-funksjonen itererer gjennom hele inndatastrengen og utfører et regulært uttrykksmatch på hvert tegn for å finne alle forekomster av understrengen. Antall iterasjoner er direkte proporsjonalt med lengden på inndatastrengen.
Auxiliary Space: Nytt

Metode 4: Bruke enkel iterasjon

Ideen bak denne tilnærmingen er å iterere gjennom inndatastrengen tegn for tegn og sjekke om hver delstreng med lengde m samsvarer med delstrengen vi ønsker å erstatte. Hvis den gjør det, legger vi til erstatningsdelstrengen til resultatet og flytter pekeren fremover med m tegn. Hvis det ikke stemmer, legger vi til det gjeldende tegnet i resultatet og flytter pekeren 1 tegn fremover.

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

>

>

Produksjon

abcdforabcd>

Tidskompleksitet: O(nm), der n er lengden på inngangsstrengen og m er lengden på delstrengen som skal erstattes.
Ekstra plass: O(n), siden vi lager en ny streng for å lagre resultatet.