class solution else
left = index[ch]+1;
}index[ch] = i;
res = math.max(res , cur);
}res = math.max(res, cur);
return res;
}}複製**
解析: 用了兩個陣列,乙個是用來遍歷時標記之前是否存在相同的字元,另乙個是用來記錄遍歷時字元的下標,還有乙個left記錄視窗的最左位置,如果之前出現過相同的字元,則從left開始,到之前字元的下標,重新標記為未訪問。
優化:滑動視窗 , 因為字元最大值為255,所以用乙個大小為256的整型數組裝就夠, 用變數left來維護視窗,如果遍歷到的字元還沒出現過,則視窗大小加一,如果遍歷到的字元出現過,但是字元的下標不在視窗內,視窗大小也加一;最後統一對當前字元的視窗下標賦值為遍歷下標+1的值(避免下標為0無法分清是否已經遍歷)
class solution else
a[ ch ] = i + 1;
res = math.max( res , cur );
}return res;
}}複製**
無重複字元最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
無重複字元最長子串
題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...
無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。int le...