一道面试题 - 找最长固定unique个数的子串

来源:互联网 发布:手工西装淘宝 编辑:程序博客网 时间:2024/06/08 12:14



解法:用map记录当前的unique数,扫描一遍

/*扫描的时候,如果unique数不超过,则继续从右边添加,否则从左边持续删除,直到unique数回到正常的水平*/int getLen(vector<int> num, int unique) {int left, right, len = num.length();int max_len = 0;left = right = 0;if(len == 0) return 0;map<int, int> m;m[num[0]] = 1;while(right < len-1) {if(m.count() <= unique) {++right;if(m.find(num[right]]) m[num[right]] = m[num[right]]+1;else m[num[right]] = 1;}else {m[num[left]] = m[num[left]] - 1;if(m[num[left]] == 0) m.erase(num[left]);++left;}max_len = max(max_len, right - left + 1);}return max_len;}


0 0
原创粉丝点击