代码拉取完成,页面将自动刷新
思路:
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();
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。