LeetCode 無重複字元的最長子串

2021-08-30 13:17:53 字數 1080 閱讀 8933

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

示例 1:

輸入: "abcabcbb"

輸出: 3

解釋: 無重複字元的最長子串是 "abc",其長度為 3。

建立乙個256位的整型陣列,因為ascii錶能表示256位字元,這樣我們可以記錄所有的字元,然後定義兩個變數res和left,res用來記錄最長無重複子串的長度,left記錄該無重複子串左邊的起始位置,然後我們遍歷整個字串,對於每乙個遍歷的字元,如果陣列中的值為0,表示之前還沒遇到該字元,此時需要計算最長無重複子串,即最右邊減去最左邊的長度(i-left+1),i表示最右邊,left表示最左邊

還有一種情況也要考慮,由於此時出現重複的字元,left的位置也更新了,如果又遇到該字元,需要重新計算最長無重複子串.

static int lengthoflongestsubstring1(string s)

int res = 0, left = 0;

for (int i = 0; i < s.length; i++)

else

m[s[i]] = i + 1;

}return res;

}

簡化解法1的操作

static int lengthoflongestsubstring2(string s)

int res = 0, left = 0;

for (int i = 0; i < s.length; i++)

return res;

}

使用hashset來表示,把出現的字元存放到set中,遇到set中沒有出現過的,加入到set中,並更新res的值,如果遇到重複的了,則從左邊開始刪字元,直到刪除到重複的字元停止

static int lengthoflongestsubstring3(string s)

else

set.remove(s[left++]);

}return res;

}

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初始化...