当前位置: 首页 > ai >正文

leetcode0767. 重构字符串-medium

1 题目:重构字符串

官方标定难度:中

给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。

返回 s 的任意可能的重新排列。若不可行,返回空字符串 “” 。

示例 1:

输入: s = “aab”
输出: “aba”
示例 2:

输入: s = “aaab”
输出: “”

提示:

1 <= s.length <= 500
s 只包含小写字母

2 solution

贪心算法,将数量的大优先排

代码

class Solution {
public:
string reorganizeString(string s) {vector<int> count(26);for (char c: s) count[c - 'a']++;auto f = [&](int a, int b) { return count[a] < count[b]; };priority_queue<int, vector<int>, decltype(f)> q(f);for(int i = 0; i < 26; i++){if(count[i]) q.push(i);}string res;int last = -1;while (!q.empty()) {if (q.size() == 1) {int cnt = count[q.top()];if (cnt > 1) return "";if (q.top() == last) return "";else {res.push_back(q.top() + 'a');return res;}}int x = q.top();q.pop();if (x != last) {count[x]--;res.push_back(x + 'a');last = x;if(count[x])q.push(x);}else{int y = q.top();q.pop();res.push_back(y + 'a');last = y;count[y]--;if(count[y])q.push(y);if(count[x])q.push(x);}//cout << res << endl;}return res;
}};

结果

在这里插入图片描述

http://www.xdnf.cn/news/6291.html

相关文章:

  • 第一个优化
  • 【测试工具】selenium和playwright如何选择去构建自动化平台
  • STC8H系列单片机STC8H_H头文件功能注释
  • Linux进程通讯和原子性
  • MYSQL基本命令
  • 商业架构 2.0 时代:ZKmall开源商城前瞻性设计如何让 B2B2C 平台领先同行 10 年?
  • Quic如何实现udp可靠传输
  • TypeScript:类
  • 康复训练:VR 老年虚拟仿真,趣味助力恢复​
  • 计算机网络--第一章(上)
  • C语言_自动义类型:联合和枚举
  • CK3588下安装linuxdeployqt qt6 arm64
  • 前端流行框架Vue3教程:17. _组件数据传递
  • 最新版VSCode通过SSH远程连接Ubuntu 16.04等旧版Linux的方法
  • 数据结构(九)——排序
  • Coze 实战教程 | 10 分钟打造你的AI 助手
  • Flutter——数据库Drift开发详细教程(六)
  • 【python基础知识】Day26 函数
  • Digi XBee XR 系列介绍
  • 如何在Firefox火狐浏览器里-安装梦精灵AI提示词管理工具
  • Spring MVC 接口的访问方法如何设置
  • Nginx与Tomcat负载均衡集群配置指南
  • IntelliJ IDEA 集成AI编程助手全解析:从Copilot到GPT-4o Mini的实践
  • 力扣.1471数组的k个最强值,力扣.1471数组的k个最强值力扣1576.替换所有的问号力扣1419.数青蛙​编辑力扣300.最长递增子序列
  • Spring框架核心技术深度解析:JDBC模板、模拟转账与事务管理
  • 【Vue】CSS3实现关键帧动画
  • 快速通关单链表秘籍
  • GPU与NPU异构计算任务划分算法研究:基于强化学习的Transformer负载均衡实践
  • Java实现MinIO上传PDF文件并配置浏览器在线打开及vue2上传页面
  • PCIe数据采集系统