logo

Python – Korvaa kaikki alimerkkijonon esiintymät merkkijonossa

Joskus Python-merkkijonojen kanssa työskennellessämme voi tulla ongelma, jossa meidän on korvattava kaikki alimerkkijonon esiintymät muilla.

Syöte: test_str = geeksforgeeks s1 = geeks s2 = abcd
Lähtö: test_str = abcdforabcd Selitys: Korvaamme kaikki s1:n esiintymät s2:lla test_str:ssä.

Syöte: test_str = geeksforgeeks s1 = for s2 = abcd
Lähtö: test_str = geeksabcdgeeks



Lähestymistapa 1

Voimme käyttää sisäänrakennettua korvaustoimintoa, joka on läsnä python3:ssa, korvaamaan kaikki alimerkkijonon esiintymät.

Toteutus sisäänrakennetun toiminnon avulla: -

Python 3




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

>

>

Lähtö

c++ prototyyppitoiminto
abcdforabcd>

Aika monimutkaisuus: Päällä)
Aputila: Päällä)

Lähestymistapa 2:

Merkkijono jaetaan osamerkkijonolla ja korvataan sitten uudella string.split()-funktiolla.

Python 3




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

>

alfa beeta karsiminen

>

Lähtö

abcdforabcd>

Ajan ja tilan monimutkaisuus kaikille menetelmille on sama:

Aika monimutkaisuus: Päällä)

Aputila: Päällä)

Tapa 3: Toinen tapa korvata kaikki alimerkkijonon esiintymät merkkijonossa on käyttää re.sub() toiminto pythonin re-moduulista.

Python 3




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

>

>

Lähtö

python muuntaa tavut merkkijonoksi
abcdforabcd>

Aika monimutkaisuus: O(n), missä n on syötetyn merkkijonon pituus. Tämä johtuu siitä, että re.sub()-funktio iteroi läpi koko syötemerkkijonon ja suorittaa säännöllisen lausekkeen vastaavuuden jokaiselle merkille löytääkseen alimerkkijonon kaikki esiintymät. Iteraatioiden määrä on suoraan verrannollinen syötemerkkijonon pituuteen.
Aputila: Uusi

Tapa 4: Yksinkertaisen iteroinnin käyttäminen

Tämän lähestymistavan ideana on iteroida syötettä merkkijono kerrallaan ja tarkistaa, vastaako jokainen m pituinen osamerkkijono korvattavaa osamerkkijonoa. Jos näin on, lisäämme tulokseen korvaavan alimerkkijonon ja siirrämme osoitinta eteenpäin m merkkiä. Jos se ei täsmää, lisäämme tulokseen nykyisen merkin ja siirrämme osoitinta 1 merkin eteenpäin.

Python 3




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

>

>

Lähtö

abcdforabcd>

Aika monimutkaisuus: O(nm), missä n on syötetyn merkkijonon pituus ja m on korvattavan osamerkkijonon pituus.
Aputila: O(n), koska luomme uuden merkkijonon tuloksen tallentamiseksi.