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.
Companies:
Quora
Related Topics:
String
// OJ: https://leetcode.com/problems/maximum-number-of-words-you-can-type/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(1)
class Solution {
public:
int canBeTypedWords(string s, string broken) {
string word;
istringstream ss(s);
unordered_set<char> st(begin(broken), end(broken));
int ans = 0;
while (ss >> word) {
int i = 0;
for (; i < word.size() && st.count(word[i]) == 0; ++i);
ans += i == word.size();
}
return ans;
}
};