Skip to main content
 首页 » 编程设计

python之从字符串中删除重复项,使其出现一次

2025年05月04日48yxwkf

给定一个只包含小写字母的字符串,删除重复的字母,使每个字母只出现一次。我必须确保你的结果是所有可能结果中字典顺序最小的。

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)))