Python – Erstat alle forekomster af en understreng i en streng

Nogle gange, mens vi arbejder med Python-strenge, kan vi have et problem, hvor vi skal erstatte alle forekomster af en understreng med andre.

Input: test_str = nørder s1 = nørder s2 = abcd
Output: test_str = abcdforabcd Forklaring: Vi erstatter alle forekomster af s1 med s2 i test_str.

Input: test_str = geeksforgeeks s1 = for s2 = abcd
Output: test_str = geeksabcdgeeks

tilgang 1

Vi kan bruge den indbyggede funktion erstatte til stede i python3 til at erstatte alle forekomster af understreng.

Implementering ved hjælp af den indbyggede funktion:-

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

Produktion

abcdforabcd 

Tidskompleksitet: På)
Hjælpeplads: På)

Fremgangsmåde 2:

Opdeling af strengen efter understreng og derefter udskiftning med den nye string.split()-funktion bruges.

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>

Produktion

abcdforabcd 

Tids- og rumkompleksiteten for alle metoderne er den samme:

Tidskompleksitet: På)

Hjælpeplads: På)

Metode 3: En anden tilgang til at erstatte alle forekomster af en understreng i en streng er at bruge re.sub() funktion fra re-modulet 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))>

Produktion

abcdforabcd 

Tidskompleksitet: O(n), hvor n er længden af ​​inputstrengen. Dette skyldes, at funktionen re.sub() itererer gennem hele inputstrengen og udfører et regulært udtryksmatch på hvert tegn for at finde alle forekomster af understrengen. Antallet af iterationer er direkte proportionalt med længden af ​​inputstrengen.
Hjælpeplads: Nyt

Metode 4: Brug simpel iteration

Ideen bag denne tilgang er at gentage inputstrengen karakter for tegn og kontrollere, om hver delstreng med længden m matcher den delstreng, vi ønsker at erstatte. Hvis det gør det, tilføjer vi erstatningsunderstrengen til vores resultat og flytter markøren frem med m tegn. Hvis det ikke matcher, tilføjer vi det aktuelle tegn til resultatet og flytter markøren frem med 1 tegn.

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

Produktion

abcdforabcd 

Tidskompleksitet: O(nm), hvor n er længden af ​​inputstrengen, og m er længden af ​​understrengen, der skal erstattes.
Hjælpeplads: O(n), da vi opretter en ny streng for at gemme resultatet.