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 ...