class Solution {
public:
    int lengthOfLongestSubstring(string s) {
    unordered_set<char> hash;       //哈希表判断重复字符            
    int n = s.size();
    int rk = -1 , ans = 0;
    for(int i=0;i<n;++i){
        if(i!=0){   //左指针向右移动则取出头元素
            hash.erase(s[i -1]);   
        }
        while(rk + 1 < n && !hash.count(s[rk+1])){    //count用于统计一个数出现的次数故前面加!
            //右指针向右移动,哈希表中放入数组进行查重
            hash.insert(s[rk + 1]);
            ++rk;   //右指针向右移动
        }
        ans = max(ans,rk-i+1);  //找出最长的子串长度rk-i表示在哈希表中的数组相减所以要加一才能表示最长子串
     }
    return ans;
    }
};
本来打算kmp求解,结果发现自己不行就离谱