一个百度的面试题:给一个二进制字符串str(即只包含0和1的字符),找到其中连续最长0出现的位置。

 

  1. #include <string.h>
  2. #include <stdio.h>
  3.  
  4. int getLongestZeroPos(char *str, char **start, char **end) 
  5.  
  6.     *start=str, *end=str; 
  7.     char *c_start=str, *c_end=str; 
  8.  
  9.     while(*str!='\0'
  10.     { 
  11.         while((*str!='\0') && (*str == '0')) ++str; 
  12.         if (c_end!=str) 
  13.         { 
  14.             c_end=str; 
  15.             if ((c_end-c_start)>(*end-*start)) { 
  16.                 *end = c_end; 
  17.                 *start = c_start; 
  18.             }                
  19.         } 
  20.         while((*str!='\0') && (*str == '1')) c_end=c_start=++str; 
  21.     } 
  22. if(*end == *start)
  23. {
  24. *start=NULL;
  25. *end=NULL;
  26. return 0;
  27. }
  28. *start++;
  29.     return *end-*start; 
  30.   
  31. int main(int argc, char* argv[]) 
  32.     char str[100]; 
  33.     char *start, *end; 
  34.     int len; 
  35.      
  36.     scanf("%s", str); 
  37.     str[strlen(str)]='\0'
  38.     len = getLongestZeroPos(str, &start, &end); 
  39.         if(!len) 
  40.             printf("No zero in string %s", str); 
  41.     else printf("The string is %s\nLongest zero is from %d to %d\n", str, start-str, end-str);