767. 重构字符串

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

若可行,输出任意可行的结果。若不可行,返回空字符串。

示例 1:

输入: S = “aab”

输出: “aba”

示例 2:

输入: S = “aaab”

输出: “”

注意:

S 只包含小写字母并且长度在[1, 500]区间内。

class Solution {
public String reorganizeString(String S) {
if (S == null || S.length() == 0) {
return "";
} int length = S.length();
int[] counts = new int[26];
for (char c : S.toCharArray()) {
counts[c - 'a'] += 100;
} for (int i = 0; i < 26; ++i) {
counts[i] += i;
}
Arrays.sort(counts);
char[] result = new char[length];
int t = 1;
for (int code : counts) {
int ct = code / 100;
char ch = (char) ('a' + (code % 100));
if (ct > (length + 1) / 2) {
return "";
}
for (int i = 0; i < ct; ++i) {
if (t >= length) {
t = 0;
}
result[t] = ch;
t += 2;
}
} return String.valueOf(result);
}
}

最新文章

  1. Java易混淆的概率:成员变量、类变量、实例变量、局部变量
  2. Spring boot 打成jar包问题总结
  3. 探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
  4. 解决oralce 11g dg搭建报错:ORA-16664、ORA-16714、ORA-16810问题--转
  5. 移动金融APP分析
  6. ava SE ---逻辑运算符
  7. IDHttp的基本用法(转)
  8. ubuntu 使用sudo apt-get update 出现 被配置多次导致无法升级错误解决方法
  9. emWin仪表界面设计,含uCOS-III和FreeRTOS两个版本
  10. jstack命令
  11. C#压缩文件,C#压缩文件夹,C#获取文件
  12. Android文件数据存储
  13. 剑指offer——python【第28题】数组 中出现次数超过一半的数字
  14. Python3实现Win10桌面背景自动切换
  15. cglib动态代理是通过继承父类的方式进行代理的 不是通过接口方式进行动态代理的 因此可以对普通的类进行代理
  16. C++中的class (1)
  17. keras系列︱图像多分类训练与利用bottleneck features进行微调(三)
  18. whistle--全新的跨平台web调试工具
  19. 防止putty的鼠标右键错误粘贴
  20. ie兼容placeholder效果

热门文章

  1. c语言中的malloc函数
  2. go多种uuid生成方式
  3. Linux登录shell和非登录(交互式shell)环境变量配置
  4. srping mvc RequestMapping实现
  5. spring test---测试SpringMvc初识
  6. Amaze UI学习笔记——JS学习历程一
  7. QQ恢复解散后的群聊或删除后的好友的方法
  8. 一个排查了大半天儿的问题,差点又让 MyBatis 背锅
  9. MySQL zip解压 安装过程和配置
  10. 架构设计 | 接口幂等性原则,防重复提交Token管理