문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
문자열 s가 주어진다. 다음의 알고리즘을 사용하여 재정렬해라.
가장 작은 문자나 가장 큰 문자가 한 번 보다 더 나타나면 임의의 문자를 선택하여 결과에 추가할 수 있다.
알고리즘을 사용해서 문자열 s를 재정렬한 후 결과를 반환해라.
#1
Input: s = "aaaabbbbcccc"
Output: "abccbaabccba"
#2
Input: s = "rat"
Output: "art"
class Solution {
public String sortString(String s) {
int [] freq = new int[26];
for (char ch: s.toCharArray()) {
freq[ch - 'a'] += 1;
}
StringBuilder result = new StringBuilder();
while (result.length() < s.length()) {
for(int i = 0; i < 26; i++) {
if (freq[i] > 0) {
result.append((char) (i + 'a'));
freq[i]--;
}
}
for(int i = 25; i >= 0; i--) {
if (freq[i] > 0) {
result.append((char) (i + 'a'));
freq[i]--;
}
}
}
return result.toString();
}
}