Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.
题意:给出一个字符串,找出最长的连续不重复子串。
思路:不重复问题一般考虑用hash表。此题用hsah表来记录是否出现重复,并在计算的过程中更新最长的子串值。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int res = 0;
if (s.empty()) return res;
unordered_map<char, int> mymap;
int start = -1;
for (int i = 0; i < s.size(); i++){
if (mymap.find(s[i]) != mymap.end()){
<span style="white-space:pre"> </span>if(start < mymap[s[i]])
<span style="white-space:pre"> </span>start = mymap[s[i]];
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>if (res < i - start)
res = i - start;
mymap[s[i]] = i;
}
return res;
}
};