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.

1935. Maximum Number of Words You Can Type
struct Solution;
use std::collections::HashSet;

impl Solution {
    fn can_be_typed_words(text: String, broken_letters: String) -> i32 {
        let broken_keys: HashSet<char> = broken_letters.chars().collect();
        let mut res = 0;
        'outer: for word in text.split_whitespace() {
            for c in word.chars() {
                if broken_keys.contains(&c) {
                    continue 'outer;
                }
            }
            res += 1;
        }
        res
    }
}

#[test]
fn test() {
    let text = "hello world".to_string();
    let broken_letters = "ad".to_string();
    let res = 1;
    assert_eq!(Solution::can_be_typed_words(text, broken_letters), res);
    let text = "leet code".to_string();
    let broken_letters = "lt".to_string();
    let res = 1;
    assert_eq!(Solution::can_be_typed_words(text, broken_letters), res);
    let text = "leet code".to_string();
    let broken_letters = "e".to_string();
    let res = 0;
    assert_eq!(Solution::can_be_typed_words(text, broken_letters), res);
}