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.