示例:給定 "abcabcbb" ,沒有重複字元的最長子串是"abc",那麼長度就是3。
給定 "bbbbb" ,最長的子串就是 "b",長度是1。
給定 "pwwkew",最長子串是"wke",長度是3。請注意答案必須是乙個子串,"pwke"是 子串行 而不是子串。
思路分析:
對字串進行遍歷,使用string.prototype.indexof()實時獲取遍歷過程中的無重複子串並存放於str,並儲存當前狀態最長無重複子串的長度為res,當遍歷結束時,res的值即為無重複字元的最長子串的長度。
解題思路:
滑動視窗思想{個人本身不知道這個詞,但解題思路是一樣,利用佇列思想進行解題}
什麼是滑動視窗?
其實就是乙個佇列,比如例題中的 abcabcbb,進入這個佇列(視窗)為 abc 滿足題目要求,當再進入 a,佇列變成了 abca,這時候不滿足要求。所以就要移動這個佇列!
如何移動?
只要把佇列的左邊的元素移出就行了,直到滿足題目要求!
一直維持這樣的佇列,找出佇列出現最長的長度時候,求出解!
時間複雜度:o(n)
js提供了substr方法可以操作字串,substr(n)可將字串從0到n進行擷取,剛好符合佇列「先進後出」的思想(假定字串都是通過尾插法連線)
演算法題 無重複字元的最長子串
問題 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 ...
演算法題 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
JS 無重複字元的最長子串
陣列優化求解 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。當字串長度小於二時,最長字串的長度應該就是字串本身的長度,只有當字串長度大於二時,才需要進一步判斷。初始情況 在沒有遇到重複元素之前,j 並將 j 指向的字元push進臨時陣列 當遇見了重複元素,i 右移乙個,更新 m 值,...