题目描述:
算法一:
代码实现:
# 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;
}