767. Reorganize String
Solution
How it works:
for example : aaabbbcdd
a_a_a_ _ _ _ , (input 'a', index difference is 1)
aba_a_a_ b_ b (input 'b', index difference is 1)
abaca_b_b (input 'c', index difference is 1)
abacadbdb (input 'd', index difference is 1)
public String reorganizeString(String S) {
int letterIndex = 0, mostFrequency = 0;
int[] count = new int[26];
for(int i = 0; i < S.length(); i++){
count[S.charAt(i) - 'a'] ++;
if(mostFrequency <= count[S.charAt(i) - 'a']){
mostFrequency = count[S.charAt(i) - 'a'];
letterIndex = S.charAt(i) - 'a';
}
}
char[] charArray = new char[S.length()];
int idx = 0;
while(count[letterIndex] != 0){
if(idx >= charArray.length) return "";
charArray[idx] = (char) (letterIndex + 'a');
idx += 2;
count[letterIndex]--;
}
for(int i = 0; i < 26; i++){
while(count[i] != 0){
if(idx >= charArray.length) idx = 1;
charArray[idx] = (char) (i + 'a');
idx += 2;
count[i]--;
}
}
return new String(charArray);
}
Last updated
Was this helpful?