ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode] 1935. Maximum Number of Words You Can Type
    Algorithm/LeetCode 2021. 9. 25. 11:10

    There is a malfunctioning keyboard where some letter keys do not work. All other keys on the keyboard work properly.

    Given a string text of words separated by a single space (no leading or trailing spaces) and a string brokenLetters of all distinct letter keys that are broken, return the number of words in text you can fully type using this keyboard.

     

    Example 1:

    Input: text = "hello world", brokenLetters = "ad" Output: 1 Explanation: We cannot type "world" because the 'd' key is broken.

    Example 2:

    Input: text = "leet code", brokenLetters = "lt" Output: 1 Explanation: We cannot type "leet" because the 'l' and 't' keys are broken.

    Example 3:

    Input: text = "leet code", brokenLetters = "e" Output: 0 Explanation: We cannot type either word because the 'e' key is broken.

     

    Constraints:

    • 1 <= text.length <= 104
    • 0 <= brokenLetters.length <= 26
    • text consists of words separated by a single space without any leading or trailing spaces.
    • Each word only consists of lowercase English letters.
    • brokenLetters consists of distinct lowercase English letters.

     

    class Solution:
        def canBeTypedWords(self, text: str, brokenLetters: str) -> int:
    
            T = text.split()
            max_possible = len(T)
            z = 0
            count = 0
            for words in T:
                word_chr = [i for i in words]
    
                for chra in brokenLetters:
    
                    while count < 1:
                        if chra in word_chr:
                            count += 1
            
            return max_possible - count

    #memo

    첫 번째 코드. Time limit exceed 떴다.

     

    
    #Credit to @haihoangdang91 for the following code:
    
    class Solution:
        def canBeTypedWords(self, text: str, brokenLetters: str) -> int:
            count = 0
            for word in text.split():
                isBroken = False
                for c in word:
                    if c in brokenLetters:
                        isBroken = True
                        break
                if isBroken == False:
                    count += 1
    
            return count

    #memo 

    discussion 에서 참고한 코드. 

    for 문에서 if 충족시에 break. 

by eric