问题描述
判
问题解析
接口设计:
int NumberOfWords(char * str);
方法1:
int NumberOfWords(char * str)
{
int num=1; //当字符串是正规的时,正确。但如果非正规的,如两个空格连续,则该算法不行,必须加个标志变量w,是否为新单词开始。
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
num++;
}
}
return num;
}
方法2:
int NumberOfWords(char * str)
{
int num=0,w=1; //定义变量num,存储单词个数;变量w,标志当前状态i是否为空格
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
w = 1;
}
else if(w==1) //如果当前字符为非空格str[i]!=' ' 且 前一个字符(状态)是空格 表示当前状态为新单词的开始
{
num++;
w = 0;
}
}
return num;
}
方法3:
int NumberOfWords(char * str)
{
int num=0,w=1; //定义变量num,存储单词个数;变量w,标志当前状态i是否为空格
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
w = 1;
}
else
{
if(w==1) //如果当前字符为非空格str[i]!=' ' 且 前一个字符(状态)是空格 表示当前状态为新单词的开始
{
num++;
}
w = 0;
}
}
return num;
}
方法4:
int NumberOfWords(char * str)
{
int num=0,w=1; //定义变量num,存储单词个数;变量w,标志当前状态i是否为空格
for(int i=0;str[i]!='\0';i++)
{
if(str[i]!=' ')
{
if(w==1)
{
num++;
}
w = 0;
}
else
{
w = 1;
}
}
return num;
}