leetcode 3 無重複字元的最長子串

2021-10-02 18:08:06 字數 950 閱讀 9472

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

原始碼:臨時陣列裡只需儲存該字元是否被占用(占用更少的記憶體空間),只需遍歷一次(複雜度o(n))。 改進之處:在發生字元重複現象時,將第乙個重複字元之前的(包含該字元)的占用情況清除,遍歷指標繼續遍歷而不用切換。

int lengthoflongestsubstring(char * s);

int p1 = 0, p2 = 0;

int max_len = 0;

int str_len = strlen(s);

while(p1 < str_len && p2 < str_len)

occupied[s[p2]] = 1;

p2++;

}max_len = max_len > (p2 - p1) ? max_len : (p2 - p1);

return max_len;

}

用指標遍歷字串,用乙個陣列儲存非重複子串中的字元在原字串中的索引,這地方儲存索引的主要目的是在遍歷時若發生字元重複現象可以定位到之前重複的第乙個字元所在的位置,將指標切換到該字元的後乙個字元開始遍歷。 細想一下,發生重複現象並進行指標切換之後,有部分字元會被遍歷多次,該情況完全可以避免

int lengthoflongestsubstring(char * s)

; int ptr = 0;

int max_len = 0;

int str_len = strlen(s);

int len = 0;

while(ptr < str_len)

else/*無重複情況*/

}max_len = max_len > len ? max_len : len;

return max_len;

}

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