刷題要緊 DAY 5 23

2021-10-06 10:19:56 字數 1481 閱讀 6184

leetcode

題目**

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

輸出: 3

解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。

輸入: "bbbbb"

輸出: 1

解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。

輸入: "pwwkew"

輸出: 3

解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。

請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。

以i作為子字串的左指標,以right作為子字串的右指標,右指標right不斷右移,直到right所指向的下乙個字元(即right+1)與左指標i指向的字元相同,此時,i到right之間(包括right)的子字串是符合沒有重複字元的子字串,將該子字串的長度與已記錄符合條件的最長子字串的長度相比較,若長於則更新,然後左指標左移,重複相同的操作,直至最後乙個字元。
**:

class

solution

//如果右指標沒有移動到最後,且當前子串中沒有包含下乙個字元

while

(right +

1< s.

length()

&&!str.

contains

(s.charat

( right+1)

))res = math.

max(res, right-i+1)

;}return res;

}}

通過begin標記開始查詢重複字元的起始位置,以第i個字元作為查詢物件,

當第i個字元在i與begin之間只出現一次時,indexof的結果必等於i,

當在第i個字元之前出現與第i個字元相同的字元時,此時符合條件的子字串的長度為i左移的次數,通過len 來記錄字串的長度

當indexof的查詢結果pos已記錄的符合條件的最長子字串的長度res,則更新res。此時,如果字串從重複字元的下乙個字元即pos+1開始到字串結尾的長度小於res,則結束查詢。否則,更新開始查詢的位置begin為重複字元的下乙個,更新從當前begin到i左移的次數到len。

因為可能會出現從開始到查詢結束都不出現posclass

solution

if( res >= s.

length()

- pos -1)

len = i - pos -1;

begin = pos +1;

} i++

; len++

;//當前符合條件的子字串長度

}return len;

}}

刷題要緊 DAY 1

leetcode day 1 題目 給你乙個字串 s 請你返回滿足以下條件的最長子字串的長度 每個母音字母,即 a e i o u 在子字串中都恰好出現了偶數次。示例 1 輸入 s eleetminicoworoep 輸出 13 解釋 最長子字串是 leetminicowor 它包含 e,i,o 各...

Day1刷題總結

如果進棧序列為e1,e2,e3,e4,則不可能的出棧序列是 d a.e2,e4,e3,e1 b.e4,e3,e2,e1 c.e1,e2,e3,e4 d.e3,e1,e4,e2 解析 對於a,進棧的順序是先把e1,e2進棧,再把e2出棧,再將e3,e4進棧,這時棧按順序剩下e1,e3,e4,出棧的順序...

Day10刷題總結

1 public class abc 3 4 將以下哪個方法插入行 3 是不合法的。b a.public float max float a,float b,float c b.public double max double c,double d c.public float max float ...