leetcode3 無重複字元的最長子串

2021-08-21 05:16:28 字數 2180 閱讀 8287

先說結論:自己沒做出來,抄的別人的。

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

示例:

給定"abcabcbb",沒有重複字元的最長子串是"abc",那麼長度就是3。

給定"bbbbb",最長的子串就是"b",長度是1。

給定"pwwkew",最長子串是"wke",長度是3。請注意答案必須是乙個子串"pwke"是 子串行  而不是子串。

7-24更新,自己在劍指offer上又看到這個題目了,重新做了一下:

動態規劃,

建立乙個陣列當雜湊錶用。本來用pos[26],結果測試用例中有很多非英語字元,所以用pos[256]

分兩種情況

字串為0,以後這個要最先考慮。

有其他的字元,pos陣列必須256大小。

陣列必須初始化為-1,因為0是存在的。

class solution ;

int pos[256]=;

for(int i=1;i<256;i++)

pos[i]=-1;

pos[s[0]]=0;

dp[0]=1;

int maxlen=1;

for (int i=1;idp[i-1])

else

pos[s[i]]=i;

}return maxlen;

}};

除錯**:

#include #include #include using namespace std;

int lengthoflongestsubstring(string s) ;

int pos[256]=;

for(int i=1;i<256;i++)

pos[i]=-1;

pos[s[0]]=0;

dp[0]=1;

int maxlen=1;

for (int i=1;idp[i-1])

else

pos[s[i]]=i;

} return maxlen;

}int main()

{ string str("abcabcbb");

int res=lengthoflongestsubstring(str);

cout《迴圈字串,找下乙個相同的字元,計算間隔。寫了半天發現是錯的。。。涼涼因為aab都過不了。。。

暴力搜尋:

迴圈所有字串,兩個迴圈,然後還要再判斷這個裡面重複不。用set來做。最後超時了。涼涼。。。

class solution {

public:

int lengthoflongestsubstring(string s) {

setmyset;

int res=0;

for(int i=0;i優化了一下,讓i從0到n-1;j從n開始往前走j--,如果發現不重複的子串,就沒有必要再往前走了。但是還是超時了。。。

class solution {

public:

int lengthoflongestsubstring(string s) {

setmyset;

int res=0;

int flag=0;

int success=0;

for(int i=0;ii;j--){

string s1(s,i,j-i);

for(int k=0;k又不甘心,再優化,感覺myset插入的時候太耗時間,改為手動排序子字串,結果還是超時啊。。。

class solution {

public:

int lengthoflongestsubstring(string s) {

// setmyset;

int res=0;

int flag=0;

int success=0;

for(int i=0;ii;j--){

string s1(s,i,j-i);

sort(s1.begin(),s1.end());

for(int k=0;k心態崩了。。。去看看人家的吧。

這個部落格講的太好:

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