ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-05-03 16:51:21  阅读:209  来源: 互联网

标签:子串 字符 false int ++ maxLen exist 字符串


题目:

 

 

 

解答:

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

请向面试官沟通交流:给定的字符串除了'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 };

 

标签:子串,字符,false,int,++,maxLen,exist,字符串
来源: https://www.cnblogs.com/ocpc/p/12822456.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有