我想在Python中解决此问题:
given a string (without spacing), remove the duplicates without using an adittional buffer.
我有以下代码:
def removedup(st):
temp = []
for i in range(len(st)):
if st[i] not in temp:
temp.append(st[i])
return temp
它返回一个没有重复的列表。
1-这个代码在O(n ^ 2)中对吗?
2-如何在不使用python中额外缓冲区的情况下做同样的事情?(我的意思是不使用列表)。也许我可以使用字符串(而不是列表),但是不确定是否会增加复杂性。另外,python中的字符串是不可变的,因此我无法进行某种类型的索引更改。(类似于C ++或Java)。
用Python解决此问题的最佳方法是什么?我知道这里有一些“看起来像”重复的问题,但是我的问题更多是与Python相关的(无需额外的缓冲区即可解决此问题)。
谢谢!
1)是的。
2)好吧
return set(st)
到目前为止,..是唯一化字符串(或任何可迭代的)的最简单方法。我不知道您是否将此视为“附加缓冲区”。您要做的任何方式都需要为另一个对象分配一些额外的内存,因为如您所说,字符串是不可变的。
当然,这不会保留顺序,如果这是一个问题,那么总会很明显:
from collections import OrderedDict
return ''.join(OrderedDict.fromkeys(st))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句