思路:是要找到无重复字母的最大子串 循环遍历时间复杂度太高 可以定义一个辅助数组;
public int lengthOfLongestSubstring(String s) {
int res = 0;//结果
int left = 0;//维持一个left指针 指向没有重复字母的子串的开始
int prev[] = new int[300]; //辅助数组 prev[i]代表字母i出现的位置
for (int i = 0; i < 300; ++i)
prev[i] = -1;
for (int i = 0; i < s.length(); ++i) {
if (prev[s.charAt(i)] >= left)
left = prev[s.charAt(i)] + 1;
prev[s.charAt(i)] = i;
if (res < i - left + 1)
res = i - left + 1;
}
return res;
}