2016-12-05 97 views
0

如何刪除字符串中的重複字母?在Python中刪除重複的字母

試過這種沒有成功..

def shorten_string(char_str): 
    new='' 
    for i in range(0,len(char_str)-1): 
     if char_str[i-1] != char_str[i]: 
      new += char_str[i] 
return new 

編輯:誤區一:我不想刪除所有重複characthers。只要它們按順序重複。

input: lloolleellaa 
outpu: lolela 
+0

可以添加樣本輸出和輸入。 – harshil9968

+0

@ harshil9968檢查帖子的第一行。 –

+0

請參閱http://stackoverflow.com/a/9841401/3832970 –

回答

4

這與所有語言的邏輯相同。在採訪中這是一個經常被問到的問題。基本上你可以將字符串的每個字符分配給一個數據結構。數據結構的選擇不同於語言和性能。有時他們也可能會問這個命令是否重要。

>>> import itertools 
>>> ''.join(c[0] for c in itertools.groupby('haalllooo')) 
'halo' 

這簡單地取各等於項的組中的頭:

>>> foo = 'haalllooo' 
>>> ''.join(sorted(set(foo), key=foo.index)) 
'halo' 
+3

http://stackoverflow.com/a/9841401/3832970, –

+0

的複製參見編輯,我以不好的方式寫了這個問題。 –

+0

@SanderB然後Dan D.提供的解決方案可以滿足您的需求。 – Keiwan

5

卸下相鄰等於項可以與groupby如下進行。

>>> ''.join(c[0] for c in itertools.groupby('haalllooo thheeerrree tttthhhiiisss iiisss aaann eeeexxxaaammpppllleee')) 
'halo there this is an example' 

只保留獨特的項目依次是:

def unique(it): 
    s = set() 
    for x in it: 
     if x not in s: 
      s.add(x) 
      yield x 

這可以這樣使用:

>>> ''.join(unique('haalllooo')) 
'halo' 
>>> ''.join(unique('haalllooo thheeerrree tttthhhiiisss iiisss aaann eeeexxxaaammpppllleee')) 
'halo terisnxmp' 
+0

您應該考慮將此添加爲重複的答案。在這個問題上還沒有表現出只刪除相鄰物品的解決方案。 –