【每日一题0829】相邻去重

:woman_mage:已知一个由英文字母组成的字符串,其中有一些相邻的元素出现了重复。请编写一个python3函数,实现相邻且相同的元素最多只保留1个,并且维持原先的顺序。

【示例】 输入:'ABBCcAD' ,输出:['A', 'B', 'C', 'c', 'A', 'D']

题目难度:中等
题目来源:codewars


    public ArrayList<String> popPaste(String str) {
        /**
         * 已知一个由英文字母组成的字符串,其中有一些相邻的元素出现了重复。
         * 请编写一个python3函数,实现相邻且相同的元素最多只保留1个,并且维持原先的顺序。
         *
         * 【示例】 输入:'ABBCcAD' ,输出:['A', 'B', 'C', 'c', 'A', 'D']
         */
        ArrayList<String> strings = new ArrayList<>(Arrays.asList(str.split("")));
        for (int i = 0; i < strings.size() - 1; i++) {
            if (strings.get(i).equals(strings.get(i + 1))) {
                strings.remove(i+1);
            }
        }
        return strings;
    }

    @Test
    public void popPasteTest() {
        assert popPaste(new String("ABBCcAD")).toString().equals("[A, B, C, c, A, D]");
    }

def test(n:str):
a=list(n)
b=len(a)
for i in range(b-1,0,-1):
if a[i]==a[i-1]:
del a[i]
return a
if name == ‘main’:
print(test(‘ABBCcAD’))

from  itertools import groupby

def dup(s):
    return [i[0] for i in groupby(s)]
assert  dup('ABBCcAD')==['A', 'B', 'C', 'c', 'A', 'D']
import  re
def dup(s):
    return list(re.sub(r'(.+)\1',r'\1','ABBCcAD'))
assert  dup('ABBCcAD')==['A', 'B', 'C', 'c', 'A', 'D']
关闭