js做演算法題 無重複字元的最長子串

2021-09-26 19:09:45 字數 639 閱讀 5779

示例:給定 "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 值,...