LeetCode 1160 拼寫單詞

2021-10-04 01:46:16 字數 1380 閱讀 1601

給你乙份『詞彙表』(字串陣列) words 和一張『字母表』(字串) chars。

假如你可以用 chars 中的『字母』(字元)拼寫出 words 中的某個『單詞』(字串),那麼我們就認為你掌握了這個單詞。

注意:每次拼寫時,chars 中的每個字母都只能用一次。

返回詞彙表 words 中你掌握的所有單詞的 長度之和。

示例 1:

輸入:words = ["cat","bt","hat","tree"], chars = "atach"

輸出:6

解釋: 

可以形成字串 "cat" 和 "hat",所以答案是 3 + 3 = 6。

示例 2:

輸入:words = ["hello","world","leetcode"], chars = "welldonehoneyr"

輸出:10

解釋:可以形成字串 "hello" 和 "world",所以答案是 5 + 5 = 10。

1 <= words.length <= 1000

1 <= words[i].length, chars.length <= 100

所有字串中都僅包含小寫英文本母

1、遍歷這個字母表,對每個字母出現的頻率進行統計

2、雙重迴圈遍歷詞彙表,外層迴圈遍歷每個單詞,內層迴圈遍歷單詞中的每個字母,順帶統計其出現頻率

3、判斷字母表中的字母是否足夠拼寫單詞 或者 字母表中是否有該字母

4、累加可拼寫的單詞長度並返回

class solution 

// 2、雙重迴圈遍歷詞彙表,外層迴圈遍歷每個單詞,內層迴圈遍歷單詞中的每個字母,順帶統計其出現頻率

for (string word : words)

boolean flag = true;

// 3、判斷字母表中的字母是否足夠拼寫單詞 或者 字母表中是否有該字母

for (char w : wordarray)

}// 4、累加可拼寫的單詞長度

if (flag)

}return sum;

}}

時間複雜度:o(n),其中 n 為所有字串的長度和。我們需要遍歷每個字串,包括 chars 以及陣列 words 中的每個單詞。

空間複雜度:o(s),其中 s 為字符集大小,在本題中 s 的值為 26(所有字串僅包含小寫字母)。程式執行過程中,最多同時存在兩個雜湊表,使用的空間均不超過字符集大小 s,因此空間複雜度為 o(s)。

LeetCode 1160 拼寫單詞

題目 給你乙份 詞彙表 字串陣列 words 和一張 字母表 字串 chars。假如你可以用 chars 中的 字母 字元 拼寫出 words 中的某個 單詞 字串 那麼我們就認為你掌握了這個單詞。注意 每次拼寫時,chars 中的每個字母都只能用一次。返回詞彙表 words 中你掌握的所有單詞的 ...

LeetCode 1160 拼寫單詞

給你乙份 詞彙表 字串陣列 words 和一張 字母表 字串 chars。假如你可以用 chars 中的 字母 字元 拼寫出 words 中的某個 單詞 字串 那麼我們就認為你掌握了這個單詞。注意 每次拼寫時,chars 中的每個字母都只能用一次。返回詞彙表 words 中你掌握的所有單詞的 長度之...

leetcode 1160 拼寫單詞

chars去重 dic char for char in chars 1 統計每個字母在chars 現的次數,並存為字典 dic char char chars.count char ans 0for word in words dic w break flag false for char in ...