力扣解題記錄之無重複字串的最長字串

2021-10-03 13:39:51 字數 1376 閱讀 9338

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

解題思路 :

暴力遍曆法

這個就沒什麼好說了,反正寫出來也一定會超出時間限制。。。

滑動視窗與雜湊表

滑動視窗是乙個佇列,佇列是一種特殊的線性表,它的特點在於只能在表的一端進行插入操作,在另一端進行刪除操作。對字串進行遍歷時,將字元乙個個推入滑動視窗中,在每次推入新字元前檢測滑動視窗中是否存在與新字元重複的元素。若是存在重複,便從另一端將字元乙個個刪除,直到與新字元重複的字元出隊後,再將新字元入隊。利用這種思想,可以得到該字串的所有不含重複字元的子字串。

使用雜湊表可以快速判斷將要入隊的字元與滑動視窗的字元是否存在重複,大大提高效率。

**

var

lengthofchildstring

=function

(s)//雜湊表

s = s.

split(''

);if(s.length ==

0|| s.length ==1)

for(

let i =

0; i < s.length; i++

)for

(let i =

0; i < s.length; i++

)else

}else

if(slide[j]

== s[i])}

while

(set

[slide[0]

]==false

) slide.

push

(s[i]);

set[s[i]]=

true;if

(i == s.length -1)

}if(i == s.length -1)

//最後乙個字元重複了if(

set[i]

==true)if

(slide[j]

== s[i])}

while

(set

[slide[0]

]==false

) slide.

push

(s[i]);

set[s[i]]=

true

; arr.

push

(slide.length)}}

}let max =1;

for(

let j =

0; j < arr.length; j++)}

return max;

}

思想比較簡單,但細節上容易出錯,尤其是新字元入隊的判斷上碰了很多壁,編**的是一門細心活。

力扣刷題記錄 字串 簡單 859親密字串

給定兩個由小寫字母構成的字串 a 和 b 只要我們可以通過交換 a 中的兩個字母得到與 b 相等的結果,就返回 true 否則返回 false 輸入 a ab b ba 輸出 true 輸入 a ab b ab 輸出 false 輸入 a aa b aa 輸出 true 輸入 a aaaaaaabc...

力扣刷題記錄 字串 簡單 459重複的子字串

給定乙個非空的字串,判斷它是否可以由它的乙個子串重複多次構成。給定的字串只含有小寫英文本母,並且長度不超過10000。輸入 abab 輸出 true 解釋 可由子字串 ab 重複兩次構成。輸入 aba 輸出 false 輸入 abcabcabcabc 輸出 true 解釋 可由子字串 abc 重複四...

力扣刷題記錄 字串 簡單 20有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 注意空字串可被認為是有效字串。輸入 輸出 true 輸入 輸出 true 輸入 輸出 false 輸入 輸出 false 輸入 輸出 true 參考官方解答,利用棧 class solution object def isvalid self...