題目描述
請從字串中找出乙個最長的不包含重複字元的子字串,計算該最長子字串的長度。
思路分析
滑動視窗雙指標
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 ...