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; }