Top.Mail.Ru

Перечень алгоритмов

18. Строки. Заменить все вхождения подстроки в строке

s = 'aa_bb_cc_dd_ee'  # исходная строка
s1 = '_'              # что заменяем
s2 = '/'              # на что заменяем      
s_out=''

Способ №1. Использование метода replace()

s_out = s.replace(s1, s2)
print(s_out)

# aa/bb/cc/dd/ee
Временная сложность: O(n),
n -  длина строки

Способ №2. Использование метода split()

m = s.split('_')   # Разбиваем по разделителю в список подстрок
#
print(m)  ['aa', 'bb', 'cc', 'dd', 'ee']
for x in m:
    s_out+=
''.join(x)+s2
s_out=s_out[:-
1]
print(s_out)

# aa/bb/cc/dd/ee
Временная сложность: O(n)

 

Способ №3. Использование цикла while

s_out = ""
i = 0
while i < len(s):
   
if s[i:i + len(s1)] == s1:
        s_out += s2
        i +=
len(s1)
   
else:
        s_out += s[i]
        i +=
1
print(s_out)

 # aa/bb/cc/dd/ee
Временная сложность: O (n*n1),
где n - длина входной строки,
n1 - длина подстроки, подлежащей замене.