[LeetCode] 1935. Maximum Number of Words You Can Type

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.

可以输入的最大单词数。

键盘出现了一些故障,有些字母键无法正常工作。而键盘上所有其他键都能够正常工作。

给你一个由若干单词组成的字符串 text ,单词间由单个空格组成(不含前导和尾随空格);另有一个字符串 brokenLetters ,由所有已损坏的不同字母键组成,返回你可以使用此键盘完全输入的 text 中单词的数目。

思路

思路是 hashmap。先将字符串 text 按空格分割成若干个单词,然后判断每个单词中是否包含 brokenLetters 里所有的单词。

复杂度

时间O(mn)
空间O(1)

代码

Java实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
public int canBeTypedWords(String text, String brokenLetters) {
int count = 0;
String[] words = text.split(" ");
for (String word : words) {
for (char c : brokenLetters.toCharArray()) {
if (word.indexOf(c) != -1) {
count++;
break;
}
}
}
return words.length - count;
}
}

[LeetCode] 1935. Maximum Number of Words You Can Type
https://shurui91.github.io/posts/1013187613.html
Author
Aaron Liu
Posted on
September 14, 2025
Licensed under