From de916e3870298de6570e29b8ee9a81235ec74524 Mon Sep 17 00:00:00 2001 From: Drew Date: Sat, 10 Oct 2020 00:07:18 +0100 Subject: [PATCH] Issue #528: LeetCode task 1160 - 1160. Find Words That Can Be Formed by Characters --- ...60_FindWordsThatCanBeFormedByCharacters.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 LeetCode/1160_FindWordsThatCanBeFormedByCharacters.py diff --git a/LeetCode/1160_FindWordsThatCanBeFormedByCharacters.py b/LeetCode/1160_FindWordsThatCanBeFormedByCharacters.py new file mode 100644 index 0000000..f45bab0 --- /dev/null +++ b/LeetCode/1160_FindWordsThatCanBeFormedByCharacters.py @@ -0,0 +1,23 @@ +class Solution: + def countCharacters(self, words: List[str], chars: str) -> int: + charBins = {char:chars.count(char) for char in chars} + goodWords = [] + + for word in words: + if (len(word) > len(chars)): + continue + + if not set(word).issubset(chars): + continue + + letterBins = {letter:word.count(letter) for letter in word} + + goodWord = True + for letter in letterBins: + if letterBins[letter] > charBins[letter]: + goodWord = False + + if (goodWord): + goodWords.append(word) + + return sum(len(word) for word in goodWords)