2019-10-11 lintcode 384. 最长无重复字符的子串 尺取法 缘起日常浪费生命~ lintcode 384. 最长无重复字符的子串 分析123456789101112131415给定一个字符串,请找出其中无重复字符的最长子字符串。样例样例 1:输入: "abcabcbb"输出: 3解释: 最长子串是 "abc".样例 2:输入: "bbbbb"输出: 1解释: 最长子串是 "b".挑战O(n) 时间复杂度 其实就是【1】的变形而已. 12345678910111213141516171819202122232425262728293031class Solution {public: /** * @param s: a string * @return: an integer */ int lengthOfLongestSubstring(string &s) { memset(v, 0,sizeof(v)); int len = s.length(), ans = 0; for (int i = 0,j=0;i<len; i++) { v[s[i]]++; // 尺取虫头部进动 if (v[s[i]]==1) // 满足条件就更新答案 { ans = max(ans, i-j+1); } else { while(s[j]!=s[i]) { --v[s[j]]; j++; } // 尺取虫尾部进动直至满足 v[s[j++]]=1; } } return ans; } int v[256]; // 表示各种字符出现的次数, 本题比较恶心,没说明字符集,害得我RE了一发}; ac情况 12345Accepted由 LintCode领扣极速闪测 强力驱动100%100% 数据通过测试总耗时 51 ms您的提交打败了 11.40% 的提交! 参考【1】 提交0 评论来发评论吧~加载更多...Powered By Valinev1.5.2 Newer lintcode 928. 最多有两个不同字符的最长子串 尺取法 Older lintcode 386. 最多有k个不同字符的最长子字符串 尺取法