已知一个由英文字母组成的字符串,其中有一些相邻的元素出现了重复。请编写一个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']