烟台建设科技网站,页面设置,html5制作手机网站,小程序制作方法教程思路 首先统计每个字符的个数#xff0c;然后从后向前按照题意添加字符
解题方法 从后向前添加字符#xff1a;1.当前字符个数repeatLimit,直接添加 2.当前字符个数repeatLimit,添加repeatLimit个#xff0c;然后插入一个下一级字符
时间复杂度:O(n)
空间复杂度:… 思路 首先统计每个字符的个数然后从后向前按照题意添加字符
解题方法 从后向前添加字符1.当前字符个数repeatLimit,直接添加 2.当前字符个数repeatLimit,添加repeatLimit个然后插入一个下一级字符
时间复杂度:O(n²)
空间复杂度:O(n)
Code
class Solution {public String repeatLimitedString(String s, int repeatLimit) {int[] cnt new int[26];for(int i0;is.length();i){ //使用数组统计每次字符个数char c s.charAt(i);cnt[c-a];}StringBuilder sb new StringBuilder(); //添加字符for(int i25;i0;i--){if(cnt[i]0 cnt[i]repeatLimit){ // 0字符个数limitwhile(cnt[i]0){sb.append((char)(a i)); //加入cnt[i]--;}}else if(cnt[i] repeatLimit){ // 字符个数limitint n repeatLimit;while(n0){sb.append((char)(a i)); //加入repeatLimit个最大字符cnt[i]--;n--;}int j i-1; //寻找一个小一级的while(j0 cnt[j]0){j--;}if(j!-1){sb.append((char)(a j)); //找到了cnt[j]--;i; //重新插入上一个剩余的字母}else{ //没找到return sb.toString();}}//if--elseif}return sb.toString();}
}注依旧是参考答案的一天。。。。。。