【Leetcode】2182. 构造限制重复的字符串

文章目录

题目

2182. 构造限制重复的字符串
在这里插入图片描述

问题:给你一个字符串 s 和一个整数 repeatLimit ,用 s 中的字符构造一个新字符串 repeatLimitedString ,使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全部字符。

示例 1:
输入:s = “cczazcc”, repeatLimit = 3
输出:“zzcccac”
解释
使用 s 中的所有字符来构造 repeatLimitedString “zzcccac”。
字母 ‘a’ 连续出现至多 1 次。
字母 ‘c’ 连续出现至多 3 次。
字母 ‘z’ 连续出现至多 2 次。
因此,没有字母连续出现超过 repeatLimit 次,字符串是一个有效的 repeatLimitedString 。
该字符串是字典序最大的 repeatLimitedString ,所以返回 “zzcccac” 。
注意,尽管 “zzcccca” 字典序更大,但字母 ‘c’ 连续出现超过 3 次,所以它不是一个有效的 repeatLimitedString 。
返回 字典序最大的 repeatLimitedString 。
如果在字符串 a 和 b 不同的第一个位置,字符串 a 中的字母在字母表中出现时间比字符串 b 对应的字母晚,则认为字符串 a 比字符串 b 字典序更大 。如果字符串中前 min(a.length, b.length) 个字符都相同,那么较长的字符串字典序更大。

示例 2
输入:s = “aababab”, repeatLimit = 2
输出:“bbabaa”
解释
使用 s 中的一些字符来构造 repeatLimitedString “bbabaa”。
字母 ‘a’ 连续出现至多 2 次。
字母 ‘b’ 连续出现至多 2 次。
因此,没有字母连续出现超过 repeatLimit 次,字符串是一个有效的 repeatLimitedString 。
该字符串是字典序最大的 repeatLimitedString ,所以返回 “bbabaa” 。
注意,尽管 “bbabaaa” 字典序更大,但字母 ‘a’ 连续出现超过 2 次,所以它不是一个有效的 repeatLimitedString 。

思路

这道题是一个简单的构造题,简单来说就是用题目给i出的字符串重新构造一个字典序最大的字符串。
记录所有字母的出现次数,然后我们从大的字母开始枚举。如果当前字母没用完就全加到答案中,否则就向前一个小的字母借一个,如果已经没有更加小的字符了则退出。

代码

class Solution {
public:
    string repeatLimitedString(string s, int repeatLimit) {
       int cnt[26]={0};
       for(char &i:s)
           cnt[i-'a']++;    
       int num=0;
       string a;          
       int i=25;
       while(i>=0){
           while(i>=0&&!cnt[i]){i--;num=0;}
           if(i<0)break;
           if(num<repeatLimit){
               a+=(char)(i+'a');    
               cnt[i]--;        
               num++;
           }
           else{
               int j=i-1;
               if(j<0)break;
               while(j>=0&&!cnt[j]){j--;}
               if(j<0)break;
               else{
               a+=(char)(j+'a');
               cnt[j]--;
               num=0;                    
               }
           }
       }
       return a;
    }
};

相关推荐

  1. leetcode-2182.构造限制重复字符串

    2024-01-16 20:24:05       40 阅读
  2. LeetCode解法汇总2182. 构造限制重复字符串

    2024-01-16 20:24:05       43 阅读
  3. 【力扣每日一题】力扣2182构造限制重复字符串

    2024-01-16 20:24:05       39 阅读
  4. Leetcode459:重复字符串

    2024-01-16 20:24:05       43 阅读
  5. Leetcode 459:重复字符串

    2024-01-16 20:24:05       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 20:24:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 20:24:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 20:24:05       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 20:24:05       20 阅读

热门阅读

  1. 【力扣刷题练习】20. 有效的括号

    2024-01-16 20:24:05       34 阅读
  2. C++ 单例模式

    2024-01-16 20:24:05       34 阅读
  3. ubuntu20.04/etc/resolv.conf 语法语义解释

    2024-01-16 20:24:05       34 阅读
  4. AtCoder Beginner Contest 335 A-E 题解

    2024-01-16 20:24:05       27 阅读
  5. MyBatis

    MyBatis

    2024-01-16 20:24:05      27 阅读
  6. SSH服务

    SSH服务

    2024-01-16 20:24:05      33 阅读