给定一个字符串,找出不含有重复字符的最长子串的长度。
示例 1:
输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。
示例 2:
输入: "bbbbb" 输出: 1 解释: 无重复字符的最长子串是 "b",其长度为 1。
示例 3:
输入: "pwwkew" 输出: 3 解释: 无重复字符的最长子串是 "wke",其长度为 3。 请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = s.size();
if(len == 0)
return 0;
int MAX = 1;
map<char, pair<int, int> > check;
int cnt = 0;
for(int i = 0; i < len; i++)
{
for(int j = i; j < len; j++)
{
if(check[s[j]].first == 0)
{
check[s[j]].first = 1;
check[s[j]].second = j;
cnt++;
MAX = max(MAX, cnt);
}
else
{
i = check[s[j]].second;
check.clear();
cnt = 0;
break;
}
}
}
return MAX;
}
};