力扣活動0317 1160 拼寫單詞

2022-01-26 07:58:30 字數 2383 閱讀 2990

給你乙份『詞彙表』(字串陣列)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

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

取words當中的乙個詞"cat"來說明,chars = "atach"

1.掃瞄"cat",如果"cat"中的字元出現在chars中,則在chars中把這個字元置為星號(*)

2.掃瞄"cat"結束之後看看是否"cat"用到了。

class

solution(object):

defcountcharacters(self, words, chars):

""":type words: list[str]

:type chars: str

:rtype: int

"""ans =0

for word in

words:

chars_ =chars

test =len(word)

for w in

word:

idx =chars_.find(w)

if idx == -1:

test-=1

break

chars_ = chars_[:idx] + "

*"+chars_[idx+1:]

if test ==len(word):

ans+=len(word)

return ans

用 word = "cat" ,chars = "atach" 來說明

1.換個方向思考,假設我們把 word 和 chars 排個序:

word = "act" 

chars = "aacht"

2.縱向對比一下發現,必須有:chars.count("a") >= word.count(a) , 否則不能拼寫這個單詞。

class

solution(object):

defcountcharacters(self, words, chars):

""":type words: list[str]

:type chars: str

:rtype: int

"""ans =0

for w in

words:

for i in

w:

if w.count(i) >chars.count(i):

break

else

: ans+=len(w)

return ans

--摘自大佬的答案

python簡潔寫法:

class

solution:

def countcharacters(self, words: list[str], chars: str) ->int:

ans =0

cnt =collections.counter(chars)

for w in

words:

c =collections.counter(w)

if all([c[i] <= cnt[i] for i in

c]):

ans +=len(w)

return

ans

力扣題目學習 拼寫單詞

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

力扣活動0315 695 島嶼的最大面積

給定乙個包含了一些 0 和 1的非空二維陣列grid,乙個島嶼是由四個方向 水平或垂直 的1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,1,0,0,0,0,1,0,0,0,0,0 0,0,0,0...

力扣 369 給單鏈表加一

用乙個 非空 單鏈表來表示乙個非負整數,然後將這個整數加一。你可以假設這個整數除了 0 本身,沒有任何前導的 0。這個整數的各個數字按照 高位在鍊錶頭部 低位在鍊錶尾部 的順序排列。示例 輸入 1,2,3 輸出 1,2,4 反轉再反轉 definition for singly linked lis...