class Solution { public: int lengthOfLongestSubstring(string s) { int maxlen = 0; for(int i=0;i < s.size();i++){ unordered_map<char,int> mp; mp[s[i]] = 1; int pos = i+1; while(pos < s.size()){ if(mp[s[pos]] == 1){ break; } else{ mp[s[pos]] = 1; } pos++; } //cout << mp.size() <<" " << maxlen << endl; int mplen = mp.size(); if(maxlen < mplen){ maxlen = mp.size(); } } return maxlen; } };
__
class Solution { public: int lengthOfLongestSubstring(string s) { unordered_set<char> st; int ans = 0; int rk = 1; for(int i=0;i < s.size();i++){ st.insert(s[i]); if(i != 0){ st.erase(s[i-1]); } while(rk < s.size()&&st.count(s[rk]) == 0){ st.insert(s[rk]); rk++; } int stlen = st.size(); if(stlen > ans) ans = stlen; } return ans; } };
双指针法,而且不能直接用st.size()来比较
原文:https://www.cnblogs.com/cunyusup/p/14258355.html