class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return int整型 */ int lengthOfLongestContinuousTasks(string s) { // write code here int n = s.size(); int ans = 0; int l = 0; set<char>se; char c; for (int i = 0; i < n; ++i) { c = s[i]; if (se.find(c) == se.end()) { se.insert(c); ans = max(ans, i - l + 1); } else { while (s[l] != c) { se.erase(s[l]); ++l; } ++l; } } return ans; } };
一、题目考察的知识点
哈希+滑动窗口
二、题目解答方法的文字分析
遍历字符串,判断每个字符是否存在滑动窗口中,不存在就加入,存在就移动滑动窗口到上一个相同字符串的最后位置。用滑动窗口记录当前已经连续完成的编号。
遍历完成之后就得到了结果
三、本题解析所用的编程语言
c++