LeetCode 無重複字元的最長子串

2021-08-22 11:35:48 字數 1555 閱讀 7347

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

示例:

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

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

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

思路:1.慢指標不動,快指標先走,每走一步,判斷快指標所指字元在位圖中是否已經存在,不存在,儲存字元資訊並繼續走,直到快指標指向重複字串;

2.若此時快指標 - 慢指標 > 已經記錄的字串長度,更新字串長度;

3.快指標不動,慢指標開始走,每走一步,將位圖中對應的字元資訊刪除,直至快慢指標所指的字元相同(此時快慢指標依舊是錯開的,慢指標指向快指標這個字元出現的第一次,快指標指向的是字元出現第二次),此時不刪除該字元的資訊,慢指標直接加加;

4.重複步驟1、2、3,直至快指標走到字串尾,當快指標指向尾,再判斷一次步驟2,返回子串串長度

int lengthoflongestsubstring(char* s) ;

while (*end != '\0')

else

while (*first != *end)

first++;

}end++;

}if (end - first > count)

return count;

}

上邊的方法實現起來很簡單。含有一種就是暴力解決發:

char* start = s;

char* end = s;

int sz = 0;

int num = 0;

int temp = 1;

int count = 0;

if (*s == null)

return 0;

while (*start != '\0') //bbbb

num++;

end++;

} if (sz>=temp)

start++;

} if (sz == 1 && num == 0)

return temp;

else if (sz == 1 && count > 1)

return temp + 1;

else if (sz == 0)

return count;

else

return temp;

LeetCode第3題題解 無重複字元的最長子串

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

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

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

leetcode刷題之路3 無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。字元陣列和字串的區別,c語言字元陣列和字串區別詳解 開始的想法是在對字元陣列設定兩個指標,初始化乙個在位置0乙個在位置1,ans初始化...