class Solution {
public:
int lengthOfLongestSubstring(string s) {
/*unordered_set<char>occu;
int j=-1;
int ans=0;
int length=s.size();
for(int i=0;i<length;++i)
{
if(i>0)
{
occu.erase(s[i-1]);
}
while(j+1<length&&!occu.count(s[j+1]))
{
occu.insert(s[j+1]);
++j;
}
ans=max(ans,j-i+1);
}
return ans;*/
std::vector<int> occurNum(256,-1);
int i=0;
int j=0;
int ans=0;
int length=s.size();
while(i<length)
{
if(occurNum[s[i]]!=-1)
{
///因为occurNum中记录的是s[i]字符最近一次出现的索引位置,
///所以在这里更新的时候需要将该索引加1,表示位置为最后出现字符s[i]字符的
///下一个位置开始算起
j=max(j,occurNum[s[i]]+1);
}
occurNum[s[i]]=i;
///字符串数组的长度是两个索引之差加1
ans=max(ans,i-j+1);
++i;
}
return ans;
}
};
Leetcode 3. Longest Substring Without Repeating Characters
最新推荐文章于 2024-05-28 15:08:53 发布