1935: Maximum-Number-of-Words-You-Can-Type
Easy
table of contents
First, we can create a hashmap of all the broken letters on our keyboard:
vector<int> broken(26, 0);
for (char& c : brokenLetters) {
++broken[c-'a'];
}Then, we iterate through text, keeping track of the
number of words we can fully type out using ans.
To verify if we can type out a word, we will keep track of a
valid boolean value.
Now, when we iterate through text, if we find a letter
that we cannot type, we can simply set valid to false.
Afterwards, when we face a single space, if
valid is true then we can increment
ans, else we do nothing. Regardless, we will set
valid back to true and continue iterating
through the next word.
int ans = 0;
bool valid = true;
for (char& c : text) {
if (c == ' ') {
if (valid) {
++ans;
}
valid = true;
} else if (broken[c-'a'] == 1) {
valid = false;
}
}
if (valid) {
++ans;
}
return ans;code
class Solution {
public:
int canBeTypedWords(string text, string brokenLetters) {
vector<int> broken(26, 0);
for (char& c : brokenLetters) {
++broken[c-'a'];
}
int ans = 0;
bool valid = true;
for (char& c : text) {
if (c == ' ') {
if (valid) {
++ans;
}
valid = true;
} else if (broken[c-'a'] == 1) {
valid = false;
}
}
if (valid) {
++ans;
}
return ans;
}
};