class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<char, int> charMap;
int start = 0;
int length = 0;
int len = s.length();
int i;
for (i=0; i<len; i++)
{
char ch = s[i];
if (charMap.find(ch) != charMap.end())
{
length = length > i - start ? length : i - start;
start = start > (charMap[ch] + 1) ? start : charMap[ch] + 1;
charMap.erase(ch);
}
charMap.insert(pair<char, int>(ch, i));
}
return length > i -start ? length : i-start;
}
};