給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
【注意】區分字串和子串行,子串必須相鄰,子串行不一定
用乙個陣列實現hashmap, key為字元,value為字元最後出現的位置,初始化為 -1。
陣列大小:因為ascii表只有256個字元,然而鍵盤只能表示128個,所以用128也行。
用乙個 left 變數來指向滑動視窗的左邊界,初始化為 -1,表示無重複字串從 left 後面開始。
維護乙個 res結果,沒次出現的視窗和res 比較,獲取最終結果
int
lengthoflongestsubstring
(char
* s)
return res;
}
原理同1
head 標記滑動視窗右邊界,rear 標記滑動視窗左邊界,初始化為0
window陣列作為hashmap,初始化為0,當出現乙個字元時,記錄這個字元的index+1;
int
lengthoflongestsubstring
(char
* s)
;int length =
strlen
(s);
if(length ==0)
while
(head <= length -1)
} temp_max = head - rear +1;
if(temp_max > max)
window[ s[head]
]= head +1;
head++;}
return max;
}
Leetcode刷題之路 3 無重複的最長字串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
LeetCode刷題 3 無重複字元的最長字串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
leetcode 第3題 無重複字元的最長子串
說明 部分文字解析來自於原文。一 暴力解法 時間複雜度o n 3 二 滑動視窗 時間複雜度為o n 三 優化的滑動視窗 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入...