从string中删除重复的字符
我怎样才能使用Python从string中删除重复的字符? 例如,假设我有一个string:
foo = 'mppmt'
我怎样才能使string:
foo = 'mpt'
注:订单不重要
如果顺序无关紧要,您可以使用
"".join(set(foo))
set()
将在string中创build一组唯一的字母, "".join()
join "".join()
将以任意顺序将字母连接回string。
如果顺序很重要,可以在Python 2.7中使用collections.OrderedDict
:
from collections import OrderedDict foo = "mppmt" print "".join(OrderedDict.fromkeys(foo))
印花
mpt
如果订单确实重要,那么:
>>> foo = 'mppmt' >>> ''.join(sorted(set(foo), key=foo.index)) 'mpt'
如果订单不是这个问题:
>>> foo='mppmt' >>> ''.join(set(foo)) 'pmt'
为了保持顺序:
>>> foo='mppmt' >>> ''.join([j for i,j in enumerate(foo) if j not in foo[:i]]) 'mpt'
如果订单很重要,
seen = set() result = [] for c in foo: if c not in seen: result.append(c) seen.add(c) result = ''.join(result)
或者没有设置:
result = [] for c in foo: if c not in result: result.append(c) result = ''.join(result)
C#代码:
private static string deleteDuplicate(string s) { for (int i = 0; i < s.Length - 1; i++) { if (s[i] == s[i + 1]) { return deleteDuplicate(s.Remove(i,1)); } } return s; }