class Solution {
public:
int longestSubstringWithoutDuplication(string s) {
int st[26]={0}; //记录每个字母出现的次数,将a~z映射到0~25
int ans=0; //空串的长度为0
for (int i=0,j=0;i<s.size();i++) //经典双指针,i在前,j在后
{
st[s[i]-'a']++;
while (j<i&&st[s[i]-'a']>1) //出现重复的字母了
{
st[s[j]-'a']--; //j向前走
j++;
}
ans=max(ans,i-j+1);
}
return ans;
}
};