LeetCode 3 無重複字元的最長子串

2021-10-14 13:02:26 字數 1326 閱讀 4605

題意

leetcode 03: 無重複字元的最長子串.

tips:簡單說下子串(substring) 和 子串行(subsequence)

就是子串在原串中一定連續

所有的子串行包含所有的子串

exampls: 「abcde」 中 「abc」 ,"bcde"是子串,「ade」,"ce"是子串行

題解

雙指標、滑動視窗

考慮當前的序列加入下乙個字元的情況

(1)當前字元未在該序列中出現

右指標右移

(2)當前字元在該序列中出現

左指標不斷向右移動,取消標記當前左指標所指向字元,直到找到該字元出現的第乙個位置停止。 再將左指標右移動一位,此時左右指標所確定的乙個序列為乙個合法序列。

(3)更新合法序列長度,標記當前字元已經出現。

擴充套件:(1) 為什麼只需要找到第乙個重複字元

因為只可能有乙個重複字元,初始化的時候空字串是個合法字串,接著執行的每一步都保障了當前左右指標所確定的字串合法。

(2) 如果要求的是串本身而非長度?(任意乙個,所有)

建立個二元組(map)只需要合法時將串合法時的左右指標存入並更新即可

code

int

lengthoflongestsubstring

(char

* s)

;//記錄字元是否出現

int l =0;

//左指標

int ret =0;

//儲存長度

for(

int i =

0;i <

strlen

(s);i++

)

l++;//下一字元才合法

} ret = ret >

(i - l +1)

? ret : i - l +1;

//更新長度

vis[s[i]]=

1;//該字元已經出現

}return ret;

}

leetcode 3 無重複的字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

leetcode 3 無重複字元的最長字元子串

堅持打卡!題目 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwk...

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...