Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 2.39 KB

README.md

File metadata and controls

69 lines (54 loc) · 2.39 KB

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

Solution 1.

// 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;
    }
};