Skip to content

1935. Maximum Number of Words You Can Type

Description

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.

 

Solutions

Solution: Hash Map

  • Time complexity: O(n)
  • Space complexity: O(n)

 

JavaScript

js
/**
 * @param {string} text
 * @param {string} brokenLetters
 * @return {number}
 */
const canBeTypedWords = function (text, brokenLetters) {
  const BASE_CODE = 'a'.charCodeAt(0);
  const words = text.split(' ');
  const letters = Array.from({ length: 26 }, () => true);
  let result = 0;

  for (const char of brokenLetters) {
    const code = char.charCodeAt(0) - BASE_CODE;

    letters[code] = false;
  }

  const isValidWord = word => {
    for (const char of word) {
      const code = char.charCodeAt(0) - BASE_CODE;

      if (!letters[code]) return false;
    }

    return true;
  };

  for (const word of words) {
    if (isValidWord(word)) {
      result += 1;
    }
  }

  return result;
};

Released under the MIT license