查找字符串中最长子串

查找字符串中最长子串,例如“I love OC”最长子串为“love”

 1 void findMaxLengthSubstr1(char *src)
 2 {
 3     char *start = src;
 4     char *end = src;
 5     unsigned int maxLength = 0;
 6     unsigned int tempLength = 0;
 7     // 此处子串长度不能超过100
 8     char maxStr[100] = "0";
 9 
10     if (src == NULL)
11     {
12         return ;
13     }
14     while (*end != '\0')
15     {
16         while(*end != ' ')
17         {
18             // 到了字符串结尾处则也算是一个子串的结束必须跳出循环
19             if (*end == '\0')
20             {
21                 break;
22             }
23             tempLength++;
24             end++;
25         }
26 
27         // 判断空格之前单词长度是否大于记录的最大长度
28         if(maxLength < tempLength)
29         {
30             maxLength = tempLength;
31             // 只能存储长度小于100的 否则直接退出,
32             // 原则可以不支持,但必须保证程序没有异常不会挂机
33             if (maxLength < 100)
34             {
35                 strncpy(maxStr,start,maxLength);
36             }
37             else
38             {
39                 printf("The substr too length");
40                 return;
41             }
42         }
43         // 无论长度是否大于maxLength只要到了间隔符都要指向空格符的下一个位置重新统计
44         end++;
45         start = end;
46         // 临时长度记录值清空,记录下一个子 串的长度
47         tempLength = 0;
48     }
49     printf("maxstr %s\n",maxStr);
50     return ;
51 }
52  

 

posted @ 2015-05-11 17:08  HugoJiang  阅读(1469)  评论(0编辑  收藏  举报