LeetCode-3-无重复字符的最长字串
程序员文章站
2022-03-06 08:25:53
...
题目链接https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
方法
1:设置一个滑动窗口 start-end
2:检查字符是否在哈希表中,若在,让start的值为该字符的下一个字符下标
3:不论字符是否在哈希表中,都将字符放入哈希表,更新end的值
4:记录当前子串长度,与result相比,result保持当前已发现最大字串的长度
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int start=0,end=0; //滑动窗口
int Newstart=0;
int result=0;
unordered_map<char,int>HashTable;
unordered_map<char,int>::iterator It_HashTable;
for(int i=0;i<s.size();++i)
{
It_HashTable=HashTable.find(s[i]);
if(It_HashTable!=HashTable.end())
{
Newstart=It_HashTable->second+1;
start=max(start,Newstart);
}
HashTable[s[i]]=i;
++end;
if(end-start>result)
{
result=end-start;
}
}
return result;
}
};