-1

有一个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 的一部分

4

1 回答 1

1

鉴于您的问题,Python 中没有更快的解决方案。dict()与 a 相同hashmap,因此您的update函数具有O(|word_length| + |dict_length|)平均大小写复杂性,其中word_length是给定单词中的字符数,并且dict_length是您的 dict 中的键值对数。

注意:@khelwood 关于d = dCopy. 弄清楚如何自己解决这个问题。

于 2016-10-20T11:38:56.077 回答