这是我的功能:
def remove_more_than_two_reps(text):
result = list(text)
for idx,char in enumerate(text):
if(result[:idx].count(char) > 2):
result.remove(char)
return ''.join(result)
预期结果:
text = 'teeeexxxxt'
result = remove_more_than_two_reps(text)
>'teexxt'
我的函数只返回原始字符串,有什么问题吗?
最佳答案
尝试使用 append
,O(1)
而不是 remove
,O(n)
:
def remove_more_than_two_reps(text: str) -> str:
result = []
for ch in text:
if len(result) < 2 or result[-1] != ch or result[-2] != ch:
result.append(ch)
return ''.join(result)
text = 'teeeexxxxt'
result = remove_more_than_two_reps(text)
print(result)
输出:
teexxt
关于python - 函数删除超过 2 个连续重复的字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72483991/