給定乙個字串,找出不含有重複字元的最長子串的長度。
示例 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初始化...