[leetcode]3无重复字符的最长字串

本题思路较清楚,通过一个数组记录各个位置所能够引导的最长字符串的长度即可。

 

稍微有一点难度在于如何向前寻找时判断已经出现了重复字符串,我采用的思路为只有当前项的长度等于当前长度时,认为尚未出现重复字符串,并更新前项长度++。

 1 int max=0;
 2     int st[100000]={0};//表示以它为开头的最长不重复字串长度
 3     int i=0;
 4     char p;
 5     while(s[i]!='\0')
 6     {
 7         p=s[i];
 8         st[i]=1;
 9         max=st[i];
10         for(int j=i-1;j>=0;j--)
11         {
12             if(s[j]!=p)
13                 if(st[j]==max)//消除中间重复项
14                 {
15                     st[j]++;
16                     max++;
17                 }
18                 else
19                     break;
20             else
21                 break;
22         }
23         i++;
24     }
25     max=0;
26     for(int j=0;j<i;j++)
27         if (max<st[j])
28             max=st[j];
29     return max;

 

posted @ 2019-03-15 18:17  冷血无情康纳酱  阅读(121)  评论(0编辑  收藏  举报