給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 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 解釋 因為...