C算法上一道题,请大家帮我看看有什么思路。
编写一段有效的程序,求已知串中最长空格序列的长度,要求尽量少检查串的字符。提示:空格序列长度增大,程度将变得更快。
程序代码:
#include <stdio.h>
#include <string.h>
/***********************************
* 参数len: 字符串长度
防止指针在间跳后越界
**********************************/
int max_blankarr(char *str, int len);
int main()
{
char test[] = "The following string has 20 blankspaces: ";
printf("The max blank arry length is %d.\n", max_blankarr(test, strlen(test)));
return 0;
}
int max_blankarr(char *str, int len)
{
int maxlen, index, i;
for(maxlen = 0, index = 0; index+maxlen < len; index++){
if(str[index] == ' ')
if(str[index+maxlen] == ' '){
i = 1;
while(++index < len && str[index] == ' ') ++i;
(i > maxlen)? maxlen = i : maxlen;
}
else index += maxlen;
}
return maxlen;
}

程序代码:
int max_blankarr(char *str, int len)
{
int maxlen, index, i;
for(maxlen = 0, index = 0; index+maxlen < len; index++){
if(str[index+maxlen] != ' ')
index += maxlen;
else
if(str[index] == ' '){
i = 1;
while(++index < len && str[index] == ' ') ++i;
(i > maxlen)? maxlen = i : maxlen;
}
}
return maxlen;
}
