网站建设网络推广柯,wordpress自定义右键,做静态网站成本,大连发布: 大连发布思路 滑动窗口#xff1a;改变思路#xff0c;从左右两边取字符#xff0c;是a b c三个字符至少被取k次#xff0c;那么意味着如果我们知道字符串中a b c的出现个数#xff0c;那么可以知道取走后剩下子串a b c的个数#xff0c;问题转化为了求最长子串
解题过程 如果a … 思路 滑动窗口改变思路从左右两边取字符是a b c三个字符至少被取k次那么意味着如果我们知道字符串中a b c的出现个数那么可以知道取走后剩下子串a b c的个数问题转化为了求最长子串
解题过程 如果a b c个数分别为x y z那么取走后剩下子串的a b c的个数分别小于等于x-k,y-k,z-k所以我们需要找到最长的子串即可该子串的a b c个数满足分别小于等于x-k,y-k,z-k
Code
class Solution {public int takeCharacters(String s, int k) {int lens.length();if(len3*k) return -1;int a0;int b0;int c0;for(int i0;ilen;i){if(s.charAt(i)a) a;else if(s.charAt(i)b)b;else c;}aa-k;bb-k;cc-k;if(a0||b0||c0) return -1;int ta0,tb0,tc0;int num-1;for(int left0,right0;rightlen;right){if(s.charAt(right)a) ta;else if(s.charAt(right)b) tb;else tc;if(taatbbtcc){}else{while((taa||tbb||tcc)leftright){if(s.charAt(left)a) ta--;else if(s.charAt(left)b) tb--;else tc--;left;}}numMath.max(num,right-left1);}if(num-1) return -1;else return len-num;}
}作者菜卷
链接https://leetcode.cn/problems/take-k-of-each-character-from-left-and-right/solutions/2932655/mei-chong-zi-fu-zhi-shao-qu-k-ge-by-ashi-dpm5/
来源力扣LeetCode
著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。