LeetCode简单题之拼写单词
題目
給你一份『詞匯表』(字符串?dāng)?shù)組) words 和一張『字母表』(字符串) chars。
假如你可以用 chars 中的『字母』(字符)拼寫出 words 中的某個(gè)『?jiǎn)卧~』(字符串),那么我們就認(rèn)為你掌握了這個(gè)單詞。
注意:每次拼寫(指拼寫詞匯表中的一個(gè)單詞)時(shí),chars 中的每個(gè)字母都只能用一次。
返回詞匯表 words 中你掌握的所有單詞的 長(zhǎng)度之和。
示例 1:
輸入:words = [“cat”,“bt”,“hat”,“tree”], chars = “atach”
輸出:6
解釋:
可以形成字符串 “cat” 和 “hat”,所以答案是 3 + 3 = 6。
示例 2:
輸入:words = [“hello”,“world”,“l(fā)eetcode”], chars = “welldonehoneyr”
輸出:10
解釋:
可以形成字符串 “hello” 和 “world”,所以答案是 5 + 5 = 10。
提示:
1 <= words.length <= 1000
1 <= words[i].length, chars.length <= 100
所有字符串中都僅包含小寫英文字母
來源:力扣(LeetCode)
解題思路
??這個(gè)題很顯然,chars里每個(gè)字符的頻率要大于words里的每個(gè)單詞的每個(gè)字符的頻率,故做一次對(duì)比需要對(duì)比相應(yīng)的兩個(gè)詞頻表。
class Solution:def countCharacters(self, words: List[str], chars: str) -> int:d={}for i in chars:d[i]=d.get(i,0)+1def check(word):D={}for i in word: #單詞的詞頻表D[i]=D.get(i,0)+1for i in D.keys():try: #嘗試訪問單詞的字符是否在chars里如果不再便不會(huì)拼寫if d[i]<D[i]: #如果在chars里詞頻不夠也不行return Falseexcept:return Falsereturn Trues=0for i in words:if check(i):s+=len(i)return s
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之拼写单词的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之柠檬水找零
- 下一篇: LeetCode简单题之整数的各位积和之