Skip to content

Commit 6c06423

Browse files
committed
Runtime: 14 ms (Top 11.69%) | Memory: 42.5 MB (Top 40.28%)
1 parent 5526a9e commit 6c06423

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
// Runtime: 14 ms (Top 11.69%) | Memory: 42.5 MB (Top 40.28%)
2+
class Solution {
3+
public String reorganizeString(String s) {
4+
StringBuilder ans=new StringBuilder("");
5+
char[] charArray=new char[s.length()];
6+
Map<Character,Integer> hashMap=new HashMap<>();
7+
Queue<CharOccurence> queue=new PriorityQueue<>((a,b)->b.occurence-a.occurence);
8+
9+
charArray=s.toCharArray();
10+
11+
for(int i=0;i<charArray.length;i++)
12+
{
13+
Integer occurence=hashMap.get(charArray[i]);
14+
if(occurence==null)
15+
hashMap.put(charArray[i],1);
16+
else
17+
hashMap.put(charArray[i],occurence+1);
18+
}
19+
queue.addAll(hashMap.entrySet()
20+
.stream()
21+
.parallel()
22+
.map(e->new CharOccurence(e.getKey(),e.getValue()))
23+
.collect(Collectors.toList()));
24+
while(!queue.isEmpty())
25+
{
26+
Queue<CharOccurence> tmpQueue=new LinkedList<>();
27+
int sizeQueue=queue.size();
28+
int stringLength=ans.length();
29+
int startSub=(stringLength-1<0)?0:stringLength-1;
30+
int endSub=stringLength;
31+
String lastLetter=ans.substring(startSub,endSub);
32+
boolean letterAdded=false;
33+
for(int i=0;i<sizeQueue;i++)
34+
{
35+
CharOccurence letter=queue.poll();
36+
if(!lastLetter.contains(String.valueOf(letter.letter)))
37+
{
38+
letter.occurence--;
39+
ans.append(String.valueOf(letter.letter));
40+
if(letter.occurence>0)
41+
tmpQueue.add(letter);
42+
letterAdded=true;
43+
break;
44+
}
45+
else
46+
{
47+
tmpQueue.add(letter);
48+
}
49+
}
50+
if(!letterAdded)
51+
return "";
52+
queue.addAll(tmpQueue);
53+
}
54+
return ans.toString();
55+
56+
}
57+
class CharOccurence{
58+
public Character letter;
59+
public int occurence;
60+
public CharOccurence(Character letter, int occurence)
61+
{
62+
this.letter=letter;
63+
this.occurence=occurence;
64+
}
65+
}
66+
}

0 commit comments

Comments
 (0)