好看的响应式网站,seo搜索优化招聘,wordpress 免签约支付,WordPress自动文章摘要思路#xff1a;先记录每个字符的出现次数#xff0c;构建一个新字符串#xff0c;从尾取字符#xff0c;每取一个该字符个数-1#xff0c;若该字符已经取到有repeatLimit个#xff0c;则递归取次大的字符#xff0c;并对应字符个数-1#xff0c;若没有次大字符了… 思路先记录每个字符的出现次数构建一个新字符串从尾取字符每取一个该字符个数-1若该字符已经取到有repeatLimit个则递归取次大的字符并对应字符个数-1若没有次大字符了则直接返回 代码
class Solution {
public:bool lastchar(string s, vectorint alphabet, int i){ //递归找次大字符if(--i -1) return false; //没有返回falseif(alphabet[i] ! 0){ alphabet[i]--; //找到了对应字符个数-1s i a; //取出字符return true; //有返回true}return lastchar(s, alphabet, i);}string repeatLimitedString(string s, int repeatLimit) {vectorint alphabet(26); //记录每个字母个数for(auto letter : s) //记录alphabet[letter - a];string newstr ; //存储结果for(int i 25; i 0; --i){if(alphabet[i] ! 0){int count 0; //记录当前字符取了几个了while(alphabet[i]){ //取完当前字符为止if(count repeatLimit){ //若已经取到repeatLimit个if(!lastchar(newstr,alphabet,i)){ //找次大字符若没有直接返回结果return newstr;}count 0; //重置取了几个}alphabet[i]--; //没有取到repeatLimit个则对应字符个数-1count; //取值个数1newstr i a; //取出字符}}}return newstr;}
};