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

2021-09-26 07:08:23 字數 977 閱讀 1542

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

示例 1:

輸入: 「abcabcbb」

輸出: 3

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

示例 2:

輸入: 「bbbbb」

輸出: 1

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

示例 3:

輸入: 「pwwkew」

輸出: 3

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

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

方法一:

採用滑動視窗的方法,滑動視窗其實就是乙個佇列,比如例題中的 abcabcbb,進入這個佇列(視窗)為 abc 滿足題目要求,當再進入 a,佇列變成了 abca,這時候不滿足要求。所以,我們要移動這個佇列!

class solution 

}len = len>str.length() ? len : str.length();

return len;

}};

方法二:

採用hash查詢的方法

其核心思想是建立乙個陣列,儲存字元在字串的位置。如果下乙個字元未重複,在主字串中不斷更新滑動視窗,並隨之更新最大字串長度。若重複,則更新陣列中儲存字元的位置,在第乙個重複字元出現的第一次出現位置之後開始更新滑動視窗。

class solution ;//儲存每個字元在字串的位置

int mlen=0;//結果

int left=0;//左邊界

for(int i=0;i=left)//如果s[i]重複出現且s[i]第一次出現的位置在s[left,i]之間

else

m[s[i]]=i+1;

}return mlen;

}};

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 輸入 pwwkew 輸出 3 ...

LeetCode 刷題 3 無重複最長子串

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