每日一题(6)
1935. 可以输入的最大单词数
class Solution {
public:int canBeTypedWords(string text, string b) {int temp[26]={0};for(auto x:b)temp[x-'a']++;int flag=1; int count=0;for(auto x:text){if(x==' '){if(flag)++count;flag=1;}else if(temp[x-'a']!=0)flag=0;}if(flag)++count;return count;}
};
temp[26]
:数组,标记26个小写字母中哪些是坏键,count
:计数器,统计有效单词数flag:标志位,标记当前正在检查的单词是否有效(即未包含任何坏键第一个循环:遍历b
,将坏键在temp数组中标记出来,第二个循环遍历text
中的每个字符遇到空格,表示一个单词结束。如果该单词有效(flag为true
),则count
加1。无论上一个单词是否有效,都将flag重置为true
,以开始检查下一个单词遇到非空格字符,则检查它是否是坏键。如果是则将flag设为false
,标记当前单词无效,循环结束后,检查最后一个单词的有效性如果有效则count
加1。