Python — aizstāj visus apakšvirknes gadījumus virknē

Dažreiz, strādājot ar Python virknēm, mums var rasties problēma, kurā mums ir jāaizstāj visi apakšvirknes gadījumi ar citiem.

Ievade: test_str = geeksforgeeks s1 = geeks s2 = abcd
Izvade: test_str = abcdforabcd Paskaidrojums: Mēs visus s1 gadījumus aizstājam ar s2 test_str.

Ievade: test_str = geeksforgeeks s1 = for s2 = abcd
Izvade: test_str = geeksabcdgeeks

1. pieeja

Mēs varam izmantot python3 iebūvēto funkciju aizstāt, lai aizstātu visus apakšvirknes gadījumus.

Ieviešana, izmantojot iebūvēto funkciju: -

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

Izvade

abcdforabcd 

Laika sarežģītība: O(n)
Palīgtelpa: O(n)

2. pieeja:

Tiek izmantota virknes sadalīšana ar apakšvirkni un pēc tam aizstāšana ar jauno funkciju 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>

Izvade

abcdforabcd 

Laika un telpas sarežģītība visām metodēm ir vienāda:

Laika sarežģītība: O(n)

Palīgtelpa: O(n)

3. metode: Vēl viena pieeja, lai aizstātu visus apakšvirknes gadījumus virknē, ir izmantot re.sub() funkcija no re moduļa programmā 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))>

Izvade

abcdforabcd 

Laika sarežģītība: O(n), kur n ir ievades virknes garums. Tas ir tāpēc, ka funkcija re.sub() atkārtojas cauri visai ievades virknei un katrai rakstzīmei veic regulārās izteiksmes atbilstību, lai atrastu visus apakšvirknes gadījumus. Iterāciju skaits ir tieši proporcionāls ievades virknes garumam.
Palīgtelpa: Jauna

4. metode: vienkāršas iterācijas izmantošana

Šīs pieejas ideja ir atkārtot ievades virknes rakstzīmi pēc rakstzīmes un pārbaudīt, vai katra m garuma apakšvirkne atbilst apakšvirknei, kuru vēlamies aizstāt. Ja tā notiek, rezultātam pievienojam aizstājējvirkni un virzām rādītāju uz priekšu par m rakstzīmēm. Ja tas neatbilst, rezultātam pievienojam pašreizējo rakstzīmi un virzām rādītāju uz priekšu par 1 rakstzīmi.

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

Izvade

abcdforabcd 

Laika sarežģītība: O(nm), kur n ir ievades virknes garums un m ir aizvietojamās apakšvirknes garums.
Palīgtelpa: O(n), jo mēs izveidojam jaunu virkni, lai saglabātu rezultātu.