解題思路:該題類似於乘積最大,加和最大的連續陣列,本題也使用於連續並且也使用滑動視窗來做,滑動視窗做法是維護兩個指標,i和j,它們什麼時候增加視窗,什麼時候打破視窗。
法一,使用while迴圈。
def
lengthlongestsubstring
(s):
#使用set來放入不重複的子串
usedchar =
set(
) maxlength =
0#維護兩個指標,打破和擴大視窗
i=0j=o
while
(i:if s[j]
notin usedchar:
) maxlength =
max(maxlength,j-i)
else
: usedchar.remove(s[i]
) i+=
1return maxlength
法二:使用for迴圈
def
lengthlongestsubstring
(s):
#維護乙個字典
usedset =
#使用j來維護打破視窗
j=0
maxlenth =
0#使用i來不斷的擴大視窗
for i in
range
(len
(s))
:#先判斷在不在字典中,然後在新增
if s[i]
notin usedset:
maxlength =
max(maxlenth,i-j)
#將該元素新增到字典裡面
else
: j +=
1#元素新增到字典中
usedset[s[i]
]=i
LeetCode 最長不含重複字元的子字串
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew ...
不含重複字元的最長子串
問題描述 給定乙個字串,找到最長的不含重複字元子串。例如,abcabccc 最長不含重複字元的子串為 abc 長度為3。對於 bbbbb 最長的子串為 b 長度為1。解決思路 滑動視窗 維護乙個不包含重複字元 視窗 從左到右掃瞄字串,每當加乙個新字元時,檢查該字元是否存在於 視窗 中,如果不存在則將...
最長不含重複字元的子字串
題目 輸入乙個字串,找出字串中最長的不含重複字元的子字串,計算該子字串的長度。假設字串中的字元為 a z 例如 arabcacfr 最長的字串為 rabc 和 acfr 長度為 4 int find max len string str else dp str i a i return max le...