題意
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.給定字串,找到最長無重複字...