采用滑动窗口的方法解决此问题 设置一个无序字符型集合win for loop遍历字符串s 如果s[i]不在win中,则将其插入win 如果s[i]在win中,则删除已有的s[i] 持续更新res return res; class Solution { public: /** * * @param s string字符串 * @return int整型 */ int lengthOfLongestSubstring(string s) { int len=s.size(); if(len==0) return 0; int res=0; int left=0; unordered_set<char> win;//无序集合 for(int i=0;i<len;i++) { while(win.find(s[i])!=win.end())//win中已有s[i] { win.erase(s[left]); left++; } win.insert(s[i]); res=max(res,i-left+1); } return res; } };