題目說明:
如,在」abcabcbb」中,其無重複字元的最長子字串是」abc」,其長度為 3;
對於,」bbbbb」,其無重複字元的最長子字串為」b」,長度為1。
基本思路:
遍歷該字串,往集合裡面插入元素;
(1)插入成功,說明無重複,繼續插入;
(2)插入不成功時,元素有重複,記錄當前最大長度,查詢與當前元素重複的前面重複元素的下標,並清空集合,並從該下標的下乙個位置繼續插入元素,繼續(1)(2)過程,直到遍歷到字串的尾部,返回最大的長度。
leetcode提交超時
#include
#include
#include
using
namespace
std;
int main()else
s.clear();//清空set,重新插入元素
i++;//從當前重複元素的下乙個位置開始重新插入set}}
cout
0;}
第二種方法通過
分別用left和right記錄當前遍歷過但未出現重複元素的左右下標,如果存在出現重複元素,直接刪除重複元素,刪除到與當前遍歷的元素不重複為止。
class solution else
}return res;
}};
LeeCode3 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。1.暴力法 public intlengthoflongestsubstring string s char ss s.tochararray int len ss.length setset newhashset int max len...
leecode3 無重複字元的最長子串
1.題目描述 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。2.示例 示例 1 輸入 s abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 s bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3...
leecode 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。題解 因為題目中所有的字元都是字元,字元的ascall碼不大於300,用乙個300的word陣列來儲存,每個字元在字串中的位置,當字元重複時,將該字元首次出現的字元的位置求解出來,利用word陣列儲存陣列的便利,將該位置之前所有的字元除去...