首页 > 其他 > 详细

字符串内无重复字符的最长子串长度

时间:2019-02-17 20:41:01      阅读:293      评论:0      收藏:0      [点我收藏+]

 

 1 int lengthOfLongestSubstring(char *s) 
 2 {
 3     int size = strlen(s);/*字符串长度*/
 4     int dict[256] = {0};
 5     for(int i=0; i<256; ++i)
 6         dict[i] = -1;
 7     int maxlen = 0;/*最大无重复字符串长度*/
 8     int start = -1;/*无重复字符串开始的位置*/
 9     for (int i=0; i<size; ++i) 
10     {       
11         if (dict[s[i]] > start) /*一旦字符有了位置记录 说明字符出现重复*/
12         {
13             start = dict[s[i]]; /*把该字符上次出现的位置 记录为字符串开始位置*/                  
14         }
15         dict[s[i]] = i; /*记录字符出现的位置 更新*/ 
16         maxlen = maxlen>i-start? maxlen: i-start;/*实时计算无重复字符串长度*/
17     }
18     return maxlen;/*返回最大无重复字符串长度*/
19 }

 

 1     char str[100] = "";
 2     char *p = str;
 3     gets(str);
 4     int len = lengthOfLongestSubstring(str);
 5 
 6     for(;*p;p++){
 7         char s[20] = "";
 8         strncpy(s,p,len);
 9         if(lengthOfLongestSubstring(s)==len)
10             printf("%s\n",s );
11     } 

 

字符串内无重复字符的最长子串长度

原文:https://www.cnblogs.com/GoldenEllipsis/p/10392518.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!