leetcode 第3題 無重複字元的最長字串

2021-10-02 02:14:56 字數 877 閱讀 1371

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。

【注意】區分字串和子串行,子串必須相鄰,子串行不一定

用乙個陣列實現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 輸入...