题目

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路归并)相关推荐

  1. leetcode 796. Rotate String | 796. 旋转字符串(KMP)

    题目 https://leetcode.com/problems/rotate-string/ 题解 左神讲的 KMP class Solution {public boolean rotateStr ...

  2. LeetCode 767. 重构字符串(堆)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = ...

  3. 767 重构字符串_重构字符串型系统

    767 重构字符串 去年,我加入了一个项目,该项目从另一个软件公司接手,但未能满足客户需求. 如您所知,在"继承"的项目及其代码库中,有许多事情可以并且应该加以改进. 可悲的是(但 ...

  4. 767. 重构字符串

    767. 重构字符串 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同. 若可行,输出任意可行的结果.若不可行,返回空字符串. 示例 1: 输入: S = "aab&qu ...

  5. LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个非空的字符串 s 和一个整数 k,你要将这个字符串中的字母进行重新排列,使得重排后的字符串中相同字母的位置间隔距离至少为 k. 所有输入的字符串都 ...

  6. leetcode 467. Unique Substrings in Wraparound String | 467. 环绕字符串中唯一的子字符串(动态规划)

    题目 https://leetcode.com/problems/unique-substrings-in-wraparound-string/ 题解 1.dp 超时版本 class Solution ...

  7. [Leetcode][第557题][JAVA][反转字符串中的单词 III][遍历][String函数]

    [问题描述][简单] [解答思路] 1. 遍历 开辟一个新字符串.然后从头到尾遍历原字符串,直到找到空格为止,此时找到了一个单词,并能得到单词的起止位置.随后,根据单词的起止位置,可以将该单词逆序放到 ...

  8. LeetCode算法入门- String to Integer (atoi)-day7

    LeetCode算法入门- String to Integer (atoi)-day7 String to Integer (atoi): Implement atoi which converts ...

  9. 【LeetCode】【HOT】394. 字符串解码(栈)

    [LeetCode][HOT]394. 字符串解码 文章目录 [LeetCode][HOT]394. 字符串解码 package hot;import java.util.LinkedList;pub ...

最新文章

  1. 看 Netty 在 Dubbo 中如何应用
  2. 浏览器数据库IndexedDB介绍
  3. 全卷积神经网路【U-net项目实战】语义分割之U-Net详解
  4. 如何设置电脑锁屏时间_电脑如何设置多屏显示?多屏显示的设置方法
  5. 密码篇——非对称加密
  6. 北斗三号b1c频点带宽_重磅北斗星通新一代22nm北斗高精度定位芯片正式发布
  7. 前端改变窗口大小内容不变形_10个前端灵魂拷问丨吃透这些就能摆脱初级前端工程师...
  8. Python items()方法
  9. 百度媒体云-android接入教程,帮助文档首页/百度账号连接/百度账号接入指南 - 百度开放云平台...
  10. ARM裸机篇(三)——i.MX6ULL第一个裸机程序
  11. 【动态规划】数字三角形c语言
  12. 如何用AI快速绘制大鼠模型及相关技术路线图,超详细教程!
  13. 跟益达学Solr5之使用Ansj分词器
  14. P1217 [USACO1.5]回文质数 Prime Palindromes
  15. 批处理之批量修改文件扩展名
  16. 软件工程第六章——详细设计
  17. from origin ‘null‘ has been blocked by CORS policy: Cross origin requests are only supported for ...
  18. 【课程设计】僵尸大战植物 Zombies vs.Plants
  19. 虚拟机概论(六)——JAVA虚拟机模型
  20. 计算机设备 软件总账和明细账,广东省会计从业资格考试《初级会计电算化》实务操作练习题.doc...

热门文章

  1. CodeForces - 1353E K-periodic Garland(思维+dp)
  2. 对校招生培养工作的建议_如何提升人才培养质量?西华的老师们正面临一场大考...
  3. 第一类斯特林数学习记录
  4. 如何检查Socket是否断开
  5. 如何分析常见的TCP问题?
  6. 5分钟了解CDN 加速原理 | +新书推荐
  7. MySQL主从复制虽好,能完美解决数据库单点问题吗?
  8. 惊!空 struct 地址竟然不相等
  9. 模拟实现unordered_mapunordered_set
  10. 音视频技术开发周刊 | 239