leetcode 767. Reorganize String | 767. 重构字符串(贪心+分桶+26路归并)
题目
https://leetcode.com/problems/reorganize-string/
题解
分桶策略,和两个月之前做的 621.Task Scheduler 类似。
两个月之前看的答案还有印象,如果是三个月之前,就说不准了。。
class Solution {public String reorganizeString(String s) {int L = s.length();int[][] count = new int[26][2];for (int i = 0; i < 26; i++) {count[i][1] = i;}for (int i = 0; i < L; i++) {count[s.charAt(i) - 'a'][0]++;}Arrays.sort(count, (o1, o2) -> o2[0] - o1[0]);// 贪心地按行平铺到桶内。桶的宽度,是出现最多的字母的出现次数int N = count[0][0];int[][] bucket = new int[L / N + 1][N];for (int[] r : bucket) {Arrays.fill(r, -1);}int total = 0;for (int i = 0; i < 26; i++) {for (int j = 0; j < count[i][0]; j++) {bucket[total / N][total % N] = count[i][1];total++;}}// 26路归并StringBuilder res = new StringBuilder();for (int j = 0; j < N; j++) {for (int i = 0; i < bucket.length; i++) {if (bucket[i][j] >= 0) {res.append((char) ('a' + bucket[i][j]));}}}if (res.charAt(L - 1) == res.charAt(L - 2)) return "";return res.toString();}
}
leetcode 767. Reorganize String | 767. 重构字符串(贪心+分桶+26路归并)相关推荐
- leetcode 796. Rotate String | 796. 旋转字符串(KMP)
题目 https://leetcode.com/problems/rotate-string/ 题解 左神讲的 KMP class Solution {public boolean rotateStr ...
- LeetCode 767. 重构字符串(堆)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = ...
- 767 重构字符串_重构字符串型系统
767 重构字符串 去年,我加入了一个项目,该项目从另一个软件公司接手,但未能满足客户需求. 如您所知,在"继承"的项目及其代码库中,有许多事情可以并且应该加以改进. 可悲的是(但 ...
- 767. 重构字符串
767. 重构字符串 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = "aab&qu ...
- LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)
文章目录 1. 题目 2. 解题 1. 题目 给你一个非空的字符串 s 和一个整数 k,你要将这个字符串中的字母进行重新排列,使得重排后的字符串中相同字母的位置间隔距离至少为 k. 所有输入的字符串都 ...
- leetcode 467. Unique Substrings in Wraparound String | 467. 环绕字符串中唯一的子字符串(动态规划)
题目 https://leetcode.com/problems/unique-substrings-in-wraparound-string/ 题解 1.dp 超时版本 class Solution ...
- [Leetcode][第557题][JAVA][反转字符串中的单词 III][遍历][String函数]
[问题描述][简单] [解答思路] 1. 遍历 开辟一个新字符串.然后从头到尾遍历原字符串,直到找到空格为止,此时找到了一个单词,并能得到单词的起止位置.随后,根据单词的起止位置,可以将该单词逆序放到 ...
- LeetCode算法入门- String to Integer (atoi)-day7
LeetCode算法入门- String to Integer (atoi)-day7 String to Integer (atoi): Implement atoi which converts ...
- 【LeetCode】【HOT】394. 字符串解码(栈)
[LeetCode][HOT]394. 字符串解码 文章目录 [LeetCode][HOT]394. 字符串解码 package hot;import java.util.LinkedList;pub ...
最新文章
- 看 Netty 在 Dubbo 中如何应用
- 浏览器数据库IndexedDB介绍
- 全卷积神经网路【U-net项目实战】语义分割之U-Net详解
- 如何设置电脑锁屏时间_电脑如何设置多屏显示?多屏显示的设置方法
- 密码篇——非对称加密
- 北斗三号b1c频点带宽_重磅北斗星通新一代22nm北斗高精度定位芯片正式发布
- 前端改变窗口大小内容不变形_10个前端灵魂拷问丨吃透这些就能摆脱初级前端工程师...
- Python items()方法
- 百度媒体云-android接入教程,帮助文档首页/百度账号连接/百度账号接入指南 - 百度开放云平台...
- ARM裸机篇(三)——i.MX6ULL第一个裸机程序
- 【动态规划】数字三角形c语言
- 如何用AI快速绘制大鼠模型及相关技术路线图,超详细教程!
- 跟益达学Solr5之使用Ansj分词器
- P1217 [USACO1.5]回文质数 Prime Palindromes
- 批处理之批量修改文件扩展名
- 软件工程第六章——详细设计
- from origin ‘null‘ has been blocked by CORS policy: Cross origin requests are only supported for ...
- 【课程设计】僵尸大战植物 Zombies vs.Plants
- 虚拟机概论(六)——JAVA虚拟机模型
- 计算机设备 软件总账和明细账,广东省会计从业资格考试《初级会计电算化》实务操作练习题.doc...
热门文章
- CodeForces - 1353E K-periodic Garland(思维+dp)
- 对校招生培养工作的建议_如何提升人才培养质量?西华的老师们正面临一场大考...
- 第一类斯特林数学习记录
- 如何检查Socket是否断开
- 如何分析常见的TCP问题?
- 5分钟了解CDN 加速原理 | +新书推荐
- MySQL主从复制虽好,能完美解决数据库单点问题吗?
- 惊!空 struct 地址竟然不相等
- 模拟实现unordered_mapunordered_set
- 音视频技术开发周刊 | 239