思路:是要找到無重複字母的最大子串 循環遍歷時間複雜度太高 可以定義一個輔助數組;
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;
}