思路:用乙個128長度的boolean陣列存放所有ascii碼中的符號,初始化都為false表示沒有訪問過,雙指標i,j初始指向0,遍歷給定字串所有字元。如果j所指字元未訪問,則將該字元改為已訪問,並向右移;否則j訪問的字元表示已訪問,len取當前長度和j-i的最大值,並且將i移動到和j所指字元重複的字元的位置+1,j++。最後還要比較len取最大值。
時間複雜度:o(n)
class
solution
boolean[
] zifu=
newboolean
[128];
for(
int i=
0;i<
128;i++
)int i=0;
int j=0;
int len=0;
while
(jlength()
)else
//zifu[s.charat(i)]=false;//不可以這樣,因為當前所指不一定就和i所指重複,可能和i到j之間的某個字元重複。
i++; j++;}
} len=math.
max(len,j-i)
;return len;
}}
LeetCode 刷題 3 無重複最長子串
題目描述 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。測試示例 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。輸入 pwwkew 輸出 3 解釋 因為...
leetcode 第3題 無重複字元的最長子串
說明 部分文字解析來自於原文。一 暴力解法 時間複雜度o n 3 二 滑動視窗 時間複雜度為o n 三 優化的滑動視窗 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入...
LeetCode刷題3無重複字元的最長子串C
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...