您的位置:首页 > 其它

3. Longest Substring Without Repeating Characters LeetCode

2016-03-17 22:48 489 查看
题意:给出一个字符串,求最长的不含相同字母的连续子串。

题解:hash+两个指针,hash每个字母最近出现的位置。left指针指向不包含当前字母的最远处。答案是i - left + 1,不停的更新。

class Solution {
public:
int lengthOfLongestSubstring(string s) {
int n = s.length();
if(n == 0) return 0;
unordered_map<char,int> hash;
hash.clear();
int left = 0,maxlen = 0;
for(int i = 0; i < n; i++)
{
if(hash.find(s[i]) != hash.end())
{
if(left <= hash[s[i]])
left = hash[s[i]] + 1;
}
hash[s[i]] = i;
maxlen = max(maxlen,i - left + 1);
}
return maxlen;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode