Skip to content

Commit 1f561e4

Browse files
authored
Create Rearrange String k Distance Apart.java
1 parent dadb59b commit 1f561e4

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public String rearrangeString(String s, int k) {
3+
Map<Character, Integer> map = new HashMap<>();
4+
for (char c : s.toCharArray()) {
5+
map.put(c, map.getOrDefault(c, 0) + 1);
6+
}
7+
PriorityQueue<Character> pq = new PriorityQueue<>((a, b) -> map.get(b).compareTo(map.get(a)));
8+
Queue<Character> busy = new LinkedList<>();
9+
StringBuilder sb = new StringBuilder();
10+
pq.addAll(map.keySet());
11+
while (!pq.isEmpty()) {
12+
Character removed = pq.poll();
13+
sb.append(removed);
14+
map.put(removed, map.get(removed) - 1);
15+
busy.add(removed);
16+
if (busy.size() < k) {
17+
continue;
18+
}
19+
Character busyRemoved = busy.remove();
20+
if (map.get(busyRemoved) > 0) {
21+
pq.add(busyRemoved);
22+
}
23+
}
24+
return sb.length() == s.length() ? sb.toString() : "";
25+
}
26+
}

0 commit comments

Comments
 (0)