首页 > 其他 > 详细

【字符串】3. 无重复字符的最长子串

时间:2020-05-03 17:32:31      阅读:53      评论:0      收藏:0      [点我收藏+]

题目:

技术分享图片

 

 

 

解答:

怎么确认一个字符是否已经存在于子串中呢?策略是用一个表存储已经出现过的字符。

请向面试官沟通交流:给定的字符串除了‘a‘ - ‘z‘外,是否还有其他字符,比如Digits、Upper case letter。是否只是包含ASCII码?或者Unicode字符集合?

技术分享图片

 

 

 1 class Solution {
 2 public:
 3     int lengthOfLongestSubstring(string s) 
 4     {
 5            int n = s.length();
 6         
 7         int i = 0;
 8         int j = 0;
 9         
10         int maxLen = 0;
11         
12         bool exist[256] = { false };
13         
14         while (j < n)
15         {
16             if (exist[s[j]])
17             {
18                 maxLen = max(maxLen, j-i);
19                 //更新i和exist数组,将j之前exist[]全部置为false
20                 while (s[i] != s[j])
21                 {
22                     exist[s[i]] = false;
23                     i++;
24                 }
25                 i++;
26                 j++;
27             }
28             else
29             {
30                 exist[s[j]] = true;
31                 j++;
32             }
33         }
34         //最后一个哦,不要忘记
35         maxLen = max(maxLen, n-i);
36         return maxLen;
37     }
38 };

 

【字符串】3. 无重复字符的最长子串

原文:https://www.cnblogs.com/ocpc/p/12822456.html

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