网站添加cms,seo优化团队,首页html模板,西昌市做网站的公司给定一个字符串S#xff0c;检查是否能重新排布其中的字母#xff0c;使得两相邻的字符不同。
若可行#xff0c;输出任意可行的结果。若不可行#xff0c;返回空字符串。
示例 1:
输入: S “aab” 输出: “aba”
代码
class Solution {public String reorganizeStri…给定一个字符串S检查是否能重新排布其中的字母使得两相邻的字符不同。
若可行输出任意可行的结果。若不可行返回空字符串。
示例 1:
输入: S “aab” 输出: “aba”
代码
class Solution {public String reorganizeString(String S) {int[] tempnew int[26];int max-1;for(int i0;iS.length();i){maxMath.max(temp[S.charAt(i)-a],max) ;}if(maxS.length()-max1) return new String();//最大出现次数太大了不可能交替出现StringBuilder stringBuildernew StringBuilder();PriorityQueueint[] priorityQueuenew PriorityQueue((o1, o2) - o2[1]-o1[1]);//最大堆for(int i0;i26;i)//构造优先队列if(temp[i]!0)priorityQueue.add(new int[]{i,temp[i]});while (!priorityQueue.isEmpty())//每次选剩余容量最多的两个字母{int[] t1priorityQueue.poll(),t2priorityQueue.poll();stringBuilder.append((char)(t1[0]a));if(t2null) return stringBuilder.toString();stringBuilder.append((char)(t2[0]a));if(--t1[1]0) priorityQueue.add(t1);if(--t2[1]0) priorityQueue.add(t2);}return stringBuilder.toString();}
}