字母和频率的字典d
表示类似于拼字游戏的游戏中的手牌。如果word
中的字母包含在d
中,则频率会更改或字母被删除(如果值== 0)且函数update
返回True
,否则d
不变,函数返回'False':
d = {'a': 1, 'p': 2, 'c': 1, }
dCopy = d.copy()
matching_lets = 0
def update():
for let in word:
if not let in dCopy:
return False
else:
if dCopy[let] == 1:
del dCopy[let]
else:
dCopy[let] -= 1
d = dCopy
return True
word = 'pap'
print update()
这是EDX课程MITx 6.00.1,计算机科学导论和使用Python编程的问题集5的一部分
答案 0 :(得分:1)
Python中没有更快的解决方案。 dict()
与hashmap
相同,因此您的update
函数的平均大小写复杂度为O(|word_length| + |dict_length|)
,其中word_length
是给定单词中的字符数dict_length
1}}是你的字典中键值对的数量。
注意:@khelwood对于d = dCopy
是正确的。弄清楚如何自己解决这个问题。