int lengthOfLongestSubstring(string s) {
int len = s.size();
if(len == 0)
return 0;
vector<int> dp(len, 0);
dp[0] = 1;
int maxlen = 1;
for (int i = 1; i < len; i++)
{
int start = i - dp[i-1];
for (int j = i - 1; j >= start; j--)
{
if (s[j] == s[i])
{
start = j + 1;
break;
}
}
dp[i] = i - start + 1;
maxlen = max(maxlen,dp[i]);
}
return maxlen;
}