劍指offer(48) 最長不重複字元子串

2021-10-23 21:55:26 字數 1275 閱讀 4522

題目描述

請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。

思路分析

滑動視窗雙指標

1.初始化頭尾指標 head,tail;

2.tail 指標右移,判斷 tail 指向的元素是否在 [head:tail] 的視窗內;

3.返回視窗長度的最大值。

def lengthoflongestsubstring(self, s: str) -> int:

head=0

tail=0

if(len(s)<2):

return len(s)

res=1

while tail int:

res=

maxlen=0;

curlen=0;

for i in range(len(s)):

val=s[i]

if val not in res:

curlen+=1

else:

index=res.index(val)

res=res[index+1:]

curlen=len(res)

if(curlen>maxlen):

maxlen=curlen

return maxlen

def lengthoflongestsubstring(s):

head = 0

tail = 0

if (len(s) < 2):

return len(s)

res=1

ans=[s[0]]

while tail < len(s) - 1:

tail += 1

if s[tail] not in s[head:tail]:

if res

res=tail-head+1

ans.clear()

else:

while s[tail] in s[head:tail]:

head += 1

return ans

s=input()

s=s[1:len(s)-1]

print(lengthoflongestsubstring(s))

劍指offer 48 最長不含重複字元的子字串

請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。定義函式f i 表示以第i個字元為結尾的不包含重複字元的子字串的最大長度。下面以第i個字元之前有沒有出現過重複字元分為兩種情況討論。如果第i個字元之前沒有出現過重複字元,即f f i 1 1。在字串 dhabcacfh 中,顯然...

劍指offer48 最長不含重複字元的子字串

輸入乙個字串 只包含 a z 的字元 求其最長不含重複字元的子字串的長度。例如對於 arabcacfr,最長不含重複字元的子字串為 acfr,長度為 4。方法1 暴力法 判斷乙個字串是否重複 def repeatstring str for i in range len str 1 for j in...

劍指offer 48 最長不含重複字元的子字串

題目出處 leetcode 劍指offer 48 最長不含重複字元的子字串 這道題和leetcode 3 無重複字元的最長子串相同。請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。曾經面試農業銀行,二面出了這道題。如果採用暴力的方法,首先乙個長度為n的字串,它的子串有n n ...