给定一个只包含小写字母的字符串,删除重复的字母,使每个字母只出现一次。我必须确保你的结果是所有可能结果中字典顺序最小的。
def removeDuplicates(str):
dict = {}
word = []
for i in xrange(len(str)):
if str[i] not in word:
word.append(str[i])
dict[str[i]] = i
else:
word.remove(str[i])
word.append(str[i])
dict[str[i]] = i
ind = dict.values()
# Second scan
for i in xrange(len(str)):
if str.index(str[i]) in ind:
continue
temp = dict[str[i]]
dict[str[i]] = i
lst = sorted(dict.keys(),key = lambda d:dict[d])
if ''.join(lst) < ''.join(word):
word = lst
else:
dict[str[i]] = temp
return ''.join(word)
我没有得到想要的结果
print removeDuplicateLetters("cbacdcbc")
Input:
"cbacdcbc"
Output:
"abcd"
Expected:
"acdb"
请您参考如下方法:
使用集合。集合是一种类似于列表的数据结构,但它删除了所有重复项。您可以通过执行 set() 来实例化一个集合,或者使用大括号将变量设置为一个集合。然而,这对于实例化空集不是很好,因为那样的话 Python 会认为它是一个字典。因此,要实现您正在做的事情,您可以执行以下功能:
def removeDuplicates(string):
return ''.join(sorted(set(string)))
