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