我正在尝试使用python3.x编写一段代码来查找单词中的重复字符。
例如,
"abcde" -> 0 # no characters repeats more than once
"aabbcde" -> 2 # 'a' and 'b'
"aabBcde" -> 2 # 'a' occurs twice and 'b' twice (bandB)
"indivisibility" -> 1 # 'i' occurs six times
这是我到目前为止的代码,
def duplicate_count(text):
my_list=list(text)
final=[]
for i in my_list:
if i in final:
return(len(final[i]))
else:
return(0)
我想提高我的python技能,所以我想知道它出了什么问题以及为什么。
有什么想法吗?
发布于 2018-06-12 09:20:46
我不明白你的代码应该做什么:你永远不会在final
中放任何东西,然后立即return
。
下面的解决方案在迭代输入时保留了两个set
。一个是我们见过的每个字符,另一个是出现多次的每个字符。我们使用set
s,因为它们具有非常快速的成员资格检查,并且因为当您尝试向已经包含该项目的set
添加项目时,不会发生任何反应:
def duplicate_count(text):
seen = set()
more_than_one = set()
for letter in text:
if letter in seen:
more_than_one.add(letter)
else:
seen.add(letter)
return len(more_than_one)
https://stackoverflow.com/questions/50807953
复制相似问题