Leetcode2182. 构造限制重复的字符串

Every day a Leetcode

题目来源:2182. 构造限制重复的字符串

解法1:贪心 + 双指针

我们先用一个长度为 26 的数组 cnt 统计字符串 s 中每个字符出现的次数,然后从大到小枚举字母表的第 i 个字母,每次取出最多 min⁡(cnt[i], repeatLimit) 个字母 i,如果取完后 cnt[i] 还大于 0,则继续取字母表中第 j 个字母,其中 j 是最大的满足 j<i 且 cnt[j]>0 的下标,直到取完所有字母。

代码:

/** @lc app=leetcode.cn id=2182 lang=cpp** [2182] 构造限制重复的字符串*/// @lc code=start
class Solution
{
public:string repeatLimitedString(string s, int repeatLimit){// 特判if (s.empty() || repeatLimit <= 0)return "";vector<int> cnt(26, 0);for (char &c : s)cnt[c - 'a']++;string ans;int cur = 0;for (int i = 25, j = 24; i >= 0 && j >= 0;){if (cnt[i] == 0) // 当前字符已经填完,填入后面的字符,重置 cur{i--;cur = 0;}else if (cur < repeatLimit){ans.push_back('a' + i);cur++;cnt[i]--;}else if (j >= i || cnt[j] == 0){j--;}else // 当前字符已经超过限制,填入其他字符,并且重置 cur{ans.push_back('a' + j);cnt[j]--;cur = 0;}}return ans;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n+|Σ|),其中 n 为字符串 s 的长度,Σ 为字符集,因为 s 由小写英文字母组成,|Σ|=26。

空间复杂度:O(|Σ|)。Σ 为字符集,因为 s 由小写英文字母组成,|Σ|=26。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413631.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React配置src根目录@

文章目录 1.打开webpack配置文件2.配置webpack 1.打开webpack配置文件 yarn eject or npm run eject 如果报错了记得提前 git commit一下 2.配置webpack 找到 webpack.config.js 文件在 webpack.config.js 文件中找到 alias 配置在alias里添加: path.resolve(src) , 或者 : pa…

密码学学习笔记(二十四):TCP/IP协议栈

TCP/IP协议栈的基础结构包括应用层、传输层、网络层、数据链路层和物理层。 应用层 应用层位于TCP/IP协议栈的最顶层&#xff0c;是用户与网络通信的接口。这一层包括了各种高级应用协议&#xff0c;如HTTP&#xff08;用于网页浏览&#xff09;、FTP&#xff08;用于文件传输…

Unity 编辑器篇|(九)编辑器美化类( GUIStyle、GUISkin、EditorStyles) (全面总结 | 建议收藏)

目录 1. GUIStyle1.1 参数总览1.2 样式代码 2. GUISkin2.1 参数总览2.2 创建自定义Skin 3. EditorStyles2.1 参数总览1.2 反射获取所有EditorStyles 1. GUIStyle GUIStyle是一个用于定制GUI控件样式的类&#xff0c;它包含了控件的外观属性&#xff0c;如字体、颜色、背景等。…

html + css + js简单的项目

以下内容直接复制粘贴就能运行 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

傲空间私有部署 Linux 指南

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 安装 docker 请下载对应的 Docker&#xff0c;安装完成后启动。Install Docker Engine on Ubu…

精品量化公式——“大资金雷达”,量价信号组合,精准探底!不漂移!

不多说&#xff0c;直接上效果如图&#xff1a; ► 日线表现 代码评估 技术指标代码评估&#xff1a; VA&#xff08;Volume Accumulation&#xff09;&#xff1a;这个公式计算了成交量的累积&#xff0c;如果当前收盘价高于前一天的收盘价&#xff0c;则累积成交量为正值&a…

Android Dialog setCanceledOnTouchOutside失效,点击dialog外面不消失

前言&#xff1a;有一个需求需要点击dialog外面要消失&#xff0c;本来以为很简单结果设置了一直未生效 setCanceledOnTouchOutside(true); 问了半天chat-gpt4结果给的答案都不明显 查看代码发现设置了style&#xff0c;于是尝试去除这个style&#xff0c;结果点击setCancele…

计算机毕业设计 基于MVC的自习室管理和预约系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Unity Mirror VR联机开发 实战篇(二)

一、迁移示例中的联机物体 1、将MirrorExamplesVR工程中的部分文件夹复制到自己的工程中。 1、打开MirrorExamplesVR中的 SceneVR-Common场景。 2、将场景中没用的东西都删掉&#xff0c;只留下面这些&#xff0c;新建一个空物体XR Mirror&#xff0c;将所有剩下的物体拖成XR …

机器人客服系统的接待模式

机器人客服接待模式 人工接待 没有机器人回复&#xff0c;人工客服回复 机器人接待 先机器人接待自动回复&#xff0c;可转接人工后&#xff0c;人工接待回复 可以设置机器人无法回答时的语句 可以设置多个转接人工的关键词 机器人人工接待 机器人自动回复和人工一块接待…

什么是网络安全,如何防范?

网络安全&#xff08;Cyber Security&#xff09;是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而遭受到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。 网络安全涵盖了网络设备安全、网络信息安全…