Python функция: удалить соседние символы, если они равны - PullRequest
0 голосов
/ 22 января 2020

Я работаю над функцией python, которая получает на вход строку и возвращает в качестве выходных данных ту же строку, но удаляя двойные буквы, если они соседние.

Я попробую чтобы быть более понятным на примере:

*

, если s = 'cssasssdf', функция возвращает 'csasdf'

, если s = 'cssasssdf ddd 'функция возвращает' csasdfd '

, если s =' cssasssdff ddd ', функция возвращает' csasdfd '

, если s =' ccssasssdf ', функция возвращает' csasdf '

*

Это мой код:


def remove_adjacences(s):
    n=''
    for car in s:
        for i in range(1,len(s)+1):
            while s[i]!=s[i+1]:
                n+=car
                if s[i]==s[i+1]:
                    continue
            return n

Ответы [ 2 ]

0 голосов
/ 22 января 2020

Без использования библиотек одним наивным подходом может быть «запомнить» последнюю букву и сравнить следующую, поскольку мы не можем пропустить индексы с for l oop:

def remove_adjacences(s):
    n = ""

    c = ''
    for new_c in s:
        if new_c != c:
            n += new_c
            c = new_c

    return n
0 голосов
/ 22 января 2020

Самый простой способ сделать это - itertools.groupby:

from itertools import groupby

def remove_adjacencies(s):
    return ''.join(k for k, _ in groupby(s))

print(remove_adjacencies('cssasssdffddd'))  # csasdfd
...