一个百度的面试题:给一个二进制字符串str(即只包含0和1的字符),找到其中连续最长0出现的位置。
- #include <string.h>
- #include <stdio.h>
- int getLongestZeroPos(char *str, char **start, char **end)
- {
- *start=str, *end=str;
- char *c_start=str, *c_end=str;
- while(*str!='\0')
- {
- while((*str!='\0') && (*str == '0')) ++str;
- if (c_end!=str)
- {
- c_end=str;
- if ((c_end-c_start)>(*end-*start)) {
- *end = c_end;
- *start = c_start;
- }
- }
- while((*str!='\0') && (*str == '1')) c_end=c_start=++str;
- }
- if(*end == *start)
- {
- *start=NULL;
- *end=NULL;
- return 0;
- }
- *start++;
- return *end-*start;
- }
- int main(int argc, char* argv[])
- {
- char str[100];
- char *start, *end;
- int len;
- scanf("%s", str);
- str[strlen(str)]='\0';
- len = getLongestZeroPos(str, &start, &end);
- if(!len)
- printf("No zero in string %s", str);
- else printf("The string is %s\nLongest zero is from %d to %d\n", str, start-str, end-str);
- }
转载于:https://blog.51cto.com/aboocool/646619