[LC] 767. Reorganize String
Posted xuanlu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LC] 767. Reorganize String相关的知识,希望对你有一定的参考价值。
Given a string S
, check if the letters can be rearranged so that two characters that are adjacent to each other are not the same.
If possible, output any possible result. If not possible, return the empty string.
Example 1:
Input: S = "aab" Output: "aba"
Example 2:
Input: S = "aaab" Output: ""
Note:
S
will consist of lowercase letters and have length in range[1, 500]
.
class Solution { public String reorganizeString(String S) { Map<Character, Integer> map = new HashMap<>(); for (char c : S.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + 1); } PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>((a, b) -> (b.getValue() - a.getValue())); for (Map.Entry<Character, Integer> entry: map.entrySet()) { pq.offer(entry); } Map.Entry<Character, Integer> prev = null; StringBuilder sb = new StringBuilder(); while (!pq.isEmpty()) { Map.Entry<Character, Integer> cur = pq.poll(); sb.append(cur.getKey()); cur.setValue(cur.getValue() - 1); if (prev != null) { pq.offer(prev); } if (cur.getValue() > 0) { prev = cur; } else { prev = null; } } return sb.length() == S.length() ? sb.toString() : ""; } }
以上是关于[LC] 767. Reorganize String的主要内容,如果未能解决你的问题,请参考以下文章
sql server中index的REBUILD和REORGANIZE
Use Word 2010's Navigation Pane to quickly reorganize documents