3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
class Solution { public: int lengthOfLongestSubstring(string s) { // 双指针问题,或者 dp 思维, 双指针 维护一个子串,实时计算长度, 注意特殊的情况,以及 // 需要注意的是,当右边指针 判断 是存在重复的字符的时候,需要不断缩小左边的窗口来判断, // 所以左边的 指针是在一个while 循环中的 if(s.size() == 0) return 0; unordered_set<char> lookup; int maxStr = 0; int left = 0; for(int i = 0; i < s.size(); i++){ while (lookup.find(s[i]) != lookup.end()){ lookup.erase(s[left]); left ++; } maxStr = max(maxStr,i-left+1); lookup.insert(s[i]); } return maxStr; } };