LeetCode--3
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其
长度为 3。
int m[256] = {0}, res = 0, left = 0; //初始化,m代表Hash_map,res是最长不重复子串的个数,left记录第一个不重复字符位置
for (int i = 0; i < s.size(); i++)
{
if (m[s[i]] == 0 || m[s[i]] < left) //使用hash table方法,记录首次出现的字母||重复出现的字母满足词语局
{
res = max(res, i - left + 1); //代表出现不重复的数字(或重复数字,则res代表重复之前的最大不重复子串个数),取两种情形的最大值
} else
{
left = m[s[i]]; //一定是重复数字
}
m[s[i]] = i + 1; //记录此字母的位置
}
return res;