題目
給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。
示例1
輸入: "abcabcbb"
輸出: 3
解釋: 因爲無重複字符的最長子串是 "abc",所以其長度爲 3。
示例2
輸入: "bbbbb"
輸出: 1
解釋: 因爲無重複字符的最長子串是 "b",所以其長度爲 1。
示例3
輸入: "pwwkew"
輸出: 3
解釋: 因爲無重複字符的最長子串是 "wke",所以其長度爲 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
算法實現:哈希表
class Solution
{
public:
int lengthOfLongestSubstring(string s)
{
int start(0), length(0), result(0);
int Size = int(s.size());
unordered_map<char, int> hash;
for (int i = 0;i < Size;i++)
{
char temp = s[i];
if (hash.find(temp) != hash.end() && hash[temp] >= start)
{
start = hash[temp] + 1;
length = i - start;
}
hash[temp] = i;
length++;
result = max(result, length);
}
return result;
}
};