C算法上一道题,请大家帮我看看有什么思路。
编写一段有效的程序,求已知串中最长空格序列的长度,要求尽量少检查串的字符。提示:空格序列长度增大,程度将变得更快。
2013-02-18 15:36
2013-02-18 18:11
2013-02-18 18:19
2013-02-18 21:22
2013-02-18 21:32
2013-02-20 15:13
程序代码:
#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;
}

2013-02-20 15:31
程序代码:
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;
}

2013-02-20 16:38
程序代码:int blank_len(char *s)
{
int max, c;
for(max = c = 0; *s; s++)
if(*s == ' ') c++;
else
{
if(max < c) max = c;
c = 0;
}
return max > c ? max : c;
}
2013-02-20 19:52

2013-02-20 20:41