如何删除字符串中的重复字母?

时间:2018-01-09 01:19:05

标签: python string

我正在尝试编写一个函数,它将返回传递的字符串中存在的唯一字符串。这是我的代码:

def repeating_letters(given_string):
    counts = {}
    for char in given_string:
        if char in counts:
            return char
        else: 
            counts[char] = 1
            if counts[char] > 1:
                del(char)
            else:
                return char

我没有得到预期的结果。我怎样才能得到理想的结果。

这时我将此字符串作为输入传递:

sample_input = "abcadb"

我期待结果是:

"abcd"

但是我的代码只是回复了我:

 nothing

2 个答案:

答案 0 :(得分:2)

def repeating_letters(given_string):
    seen = set()
    ret = []
    for c in given_string:
        if c not in seen:
            ret.append(c)
            seen.add(c)
    return ''.join(ret)

我们会在第一次看到它时将每个字母添加到集合seen,同时将其添加到列表ret中。然后我们返回join ed列表。

答案 1 :(得分:2)

如果通过set sorted {{3}}使结果字符串中的顺序单线就可以实现此目的为:

>>> my_str = 'abcadbgeg'

>>> ''.join(sorted(set(my_str),key=my_str.index))
'abcdge'

这里排序将根据原始字符串中每个字符的第一个索引对set中的字符进行排序,从而生成有序的字符列表。

但是,如果结果字符串中的顺序不重要,那么您可以这样做:

>>> ''.join(set(my_str))
'acbedg'