leetcode三月每日一題(1160)拼寫單詞

2021-10-04 19:24:32 字數 1221 閱讀 2696

題目:

思路:原理:對於詞彙表中的每個單詞,只要單詞中每個字元出現的次數只要小於等於字母表中每個字元出現的次數,那麼單詞就可以用字母表表示。

因此,利用以下思路解決:

建立兩個字典進行儲存,乙個字典儲存詞彙表中的每個單詞中每個字元出現的次數,乙個字典儲存字母表中每個字元出現的次數。

**如下:

class

solution

:def

countcharacters

(self, words, chars)

: chars_cnt = collections.counter(chars)

ans =

0for word in words:

word_cnt = collections.counter(word)

count =

0for c in word_cnt:

if chars_cnt[c]

< word_cnt[c]

:break

count +=

1if count ==

len(word_cnt)

: ans +=

len(word)

return ans

補充collections.counter的用法,

乙個counter是dict子類,用於計數可雜湊的物件。這是乙個無序的容器,元素被作為字典的key儲存,它們的計數作為字典的value儲存。counter允許是任何整數,包括0和負數。

counter物件有乙個字典介面除了它們在缺失的items時候返回0而不是產生乙個keyerror。

即遇到字典中不存在的鍵時,不會丟擲異常,而是返回value為0.

即鍵p不存在於字典中,但是不會丟擲異常,而是返回值0.

每日一題 LeetCode

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...

每日一題 1

題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...

每日一題 1

注 分數越高的選手,排名越靠前。示例 1 輸入 5,4,3,2,1 輸出 gold medal silver medal bronze medal 4 5 解釋 前三名運動員的成績為前三高的,因此將會分別被授予 金牌 銀牌 和 銅牌 gold medal silver medal and bronz...