1 Star 1 Fork 0

laodasbch/Leetcode-Complete-Guide

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
767.txt 1.42 KB
一键复制 编辑 原始数据 按行查看 历史
junbinLiang 提交于 5年前 . move
思路:
1. 把出现次数最多的先用掉
代码:
class Solution {
public String reorganizeString(String s) {
StringBuilder str=new StringBuilder();
int table[]=new int[26];
for(int i=0;i<s.length();i++){
table[s.charAt(i)-'a']++;
}
PriorityQueue<int[]>pq=new PriorityQueue<>((a,b)->{
return b[1]-a[1];
});
for(int i=0;i<table.length;i++){
if(table[i]==0)continue;
pq.add(new int[]{i,table[i]});
}
int top[]=pq.poll();
top[1]--;
if(top[1]!=0)pq.add(top);
str.append(""+(char)(top[0]+'a'));
while(pq.size()>1){
int A[]=pq.poll();
int B[]=pq.poll();
char last=str.toString().charAt(str.toString().length()-1);
char a=(char)(A[0]+'a');
char b=(char)(B[0]+'a');
if(a!=last){
str.append(a+"");
A[1]--;
if(A[1]!=0)pq.add(A);
pq.add(B);
}else{
B[1]--;
str.append(b+"");
if(B[1]!=0)pq.add(B);
pq.add(A);
}
}
if(pq.size()>0){
if(pq.peek()[1]>1)return "";
str.append(""+(char)(pq.peek()[0]+'a'));
}
return str.toString();
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/laodasbch/Leetcode-Complete-Guide.git
git@gitee.com:laodasbch/Leetcode-Complete-Guide.git
laodasbch
Leetcode-Complete-Guide
Leetcode-Complete-Guide
master

搜索帮助