重构字符串(767)

ops/2025/2/2 0:52:06/

767. 重构字符串 - 力扣(LeetCode)

解法:

class Solution {
public:string reorganizeString(string s){string res;//因为1 <= s.length <= 500 , uint64_t 类型足够uint16_t n = s.size();if (n == 0) {return res;}unordered_map<char, uint16_t> m;for (auto c : s) {m[c] += 1;}vector<pair<char, uint16_t>> v(m.begin(), m.end());//构建最大堆auto compare_f = [](const pair<char, uint16_t> & i1,const pair<char, uint16_t> & i2){return i1.second < i2.second;};//按照key-value : letter-count,按照count构建最小堆priority_queue<pair<char, uint16_t>, std::vector<pair<char, uint16_t>>, decltype(compare_f)> q (v.begin(), v.end(), compare_f);auto & i = q.top();//如果一个letter,其counter大于一半以上,则肯定无法构建if ((((n & 1) == 1) && (i.second > n/2 + 1)) ||(((n & 1) == 0) && (i.second > n/2))){return  res;}//贪心法,每次从优先队列里面取出count最大的元素while (!q.empty()) {auto  i = move(q.top());q.pop();if (res.size() > 0 && res.back() == i.first) {//如果letter相同,则再取出次多的auto j = move(q.top());q.pop();res += j.first;j.second -= 1;//如果letter count 大于0,则继续插回队列if (j.second > 0) {q.push(j);}}res += i.first;i.second -= 1;//如果letter count 大于0,则继续插回队列if (i.second > 0) {q.push(i);}}return res;}
};

总结:时间复杂度O(N2logN),空间复杂度O(N),应用到了最小堆、贪心算法


http://www.ppmy.cn/ops/154900.html

相关文章

“com.docker.vmnetd”将对你的电脑造成伤害。 如何解决 |Mac

电脑型号&#xff1a;Macbook pro &#xff08;Apple M3 Pro&#xff09; 系统版本&#xff1a;15.2 打开电脑突然提示“com.docker.vmnetd”将对你的电脑造成伤害&#xff0c;执行以下操作 # 停掉 Docker 服务 sudo pkill [dD]ocker# 停掉 vmnetd 服务 sudo launchctl boot…

IDEA工具下载、配置和Tomcat配置

1. IDEA工具下载、配置 1.1. IDEA工具下载 1.1.1. 下载方式一 官方地址下载 1.1.2. 下载方式二 官方地址下载&#xff1a;https://www.jetbrains.com/idea/ 1.1.3. 注册账户 官网地址&#xff1a;https://account.jetbrains.com/login 1.1.4. JetBrains官方账号注册…

cmd命令行无法进入D:盘怎么办

我找到了一个方法就是 增加一个/d cd /d d: 如下图,我不仅可以进入d盘符下&#xff0c;还可以访问盘符下的文件夹

[C++技能提升]类注册

最近在做AI信息在各个平台流转的框架设计&#xff0c;想要设计一种可以灵活扩展、不改变原有代码的框架&#xff0c;了解到了类注册。 具体需求是这样的&#xff1a;AI算法在客户本地电脑和云端都有部署&#xff0c;原先AI在这两个平台下的输出格式并不统一&#xff0c;且每个…

《STL基础之vector、list、deque》

【vector、list、deque导读】vector、list、deque这三种序列式的容器&#xff0c;算是比较的基础容器&#xff0c;也是大家在日常开发中常用到的容器&#xff0c;因为底层用到的数据结构比较简单&#xff0c;笔者就将他们三者放到一起做下对比分析&#xff0c;介绍下基本用法&a…

Spring Boot 日志:项目的“行车记录仪”

一、什么是Spring Boot日志 &#xff08;一&#xff09;日志引入 在正式介绍日志之前&#xff0c;我们先来看看上篇文章中&#xff08;Spring Boot 配置文件&#xff09;中的验证码功能的一个代码片段&#xff1a; 这是一段校验用户输入的验证码是否正确的后端代码&#xff0c…

2025 年,链上固定收益领域迈向新时代

“基于期限的债券市场崛起与 Secured Finance 的坚定承诺” 2025年&#xff0c;传统资产——尤其是股票和债券——大规模涌入区块链的浪潮将创造历史。BlackRock 首席执行官 Larry Fink 近期在彭博直播中表示&#xff0c;代币化股票和债券将逐步融入链上生态&#xff0c;将进一…

雨晨 27788.2025 企业版

雨晨 27788.2025 企业版 文件: 雨晨 27788.2025 企业版 install.esd 大小: 2111418122 字节 修改时间: 2025年1月31日, 星期五, 13:53:03 MD5: 975BC9F17ACFCF0F6CD657EC9DFDE820 SHA1: 13059A56F67EF079B42077211E651C2ADF46EDA1 CRC32: 04F163F4 https://www.123684.com/s/z…