在单词列表中计算字母频率,不包括同一单词中的重复字母。

11 浏览
0 Comments

在单词列表中计算字母频率,不包括同一单词中的重复字母。

我正在尝试找到一组单词中出现频率最高的字母。我在算法上遇到了困难,因为我需要跳过重复的字母,只计算每个单词中字母的频率一次,因此我需要帮助找到一种方法,只计算整个列表中每个单词中字母的频率一次,忽略第二次出现的情况。

例如,如果我有:

words = ["tree", "bone", "indigo", "developer"]

频率将是:

letters={a:0, b:1, c:0, d:2, e:3, f:0, g:1, h:0, i:1, j:0, k:0, l:1, m:0, n:2, o:3, p:1, q:0, r:2, s:0, t:1, u:0, v:1, w:0, x:0, y:0, z:0}

从字母字典中可以看出:'e' 是3而不是5,因为如果 'e' 在同一个单词中重复多次,应该被忽略。

这是我想出的算法,它是用Python实现的:

for word in words:
    count=0;
    for letter in word:
        if(letter.isalpha()):
            if((letters[letter.lower()] > 0  && count == 0) ||
               (letters[letter.lower()] == 0 && count == 0)):
                    letters[letter.lower()]+=1
                    count=1
            elif(letters[letter.lower()]==0 && count==1):   
                letters[letter.lower()]+=1

但它仍然需要改进,我想不出其他办法,我很愿意有人能帮我想出一个可行的解决方案。

0