题目描述:
算法一:
代码实现:
# include<stdio.h>
# include<string.h>
int main(){
//char text[100]="leet code";
//char brokenLetters[26]="lt";
char text[100]="hello world";
char brokenLetters[26]="ad";
int textlen=strlen(text);
int letterslen=strlen(brokenLetters);
int flag=0,ret=0;
for(int i=0;i<=textlen;i++){
if((text[i]==' '||text[i]=='\0')&&flag==0){//当每个单词结束且其中都可以被拼写
ret++;continue;
}
if(text[i]==' '&&flag==1){//当单词结束且其中出现不能被拼写的字母
flag=0;continue;
}
if(flag==1) continue;//后续都不用判断
//也可以用strstr来替换
for(int j=0;j<letterslen;j++){
//判断是否不能拼写
if(text[i]==brokenLetters[j]){
flag=1;//用来记录是否出现不能被拼写的字母
break;
}
}
}
printf("ret = %d\n",ret);
}
算法二:
代码实现:
int canBeTypedWords(char *text,char *brokenLetters){
int back=1,words=0,len=0,a=1;
//back-->总单词数 word-->不能拼写的单词数
for(len;text[len]!='\0';len++){
if(text[len]==' '){
a=1;back++;//a重置,
}
else{
//a加入判断条件,保证每个单词中之后让word加一次,避免重复增加
if(a && strstr(brokenLetters,text[len])){
words++;a=0;
}
}
}
//总单词数减去不能拼写的单词数为可以拼写的单词数
return back - words;
}