TIL
[코테연습] 451. Sort Characters By Frequency
크라00
2024. 6. 19. 14:02
- 자주 반복되는 문자열 순으로 문자열을 정렬하여 출력하는 문제
- 같은 반복일 경우에는 순서는 상관하지 않는다.
1. Map<String, Integer> 선언
2. map 을 통해 같은 문자가 있는 경우를 hash 로 구분하여 count 한다.
3. String[] 배열을 선언하여, 같은 length 의 경우 같은 배열 index에 string 을 합친다.
4. String[] 배열을 역순으로 반복하여, String 변수에 담아 리턴한다.
class Solution {
public String frequencySort(String s) {
Map<String, Integer> map = new HashMap<>();
int max = 0;
String[] arr = s.split("");
for(int i = 0; i < arr.length; i++) {
String str = arr[i];
int count = map.getOrDefault(str, 0);
max = Math.max(max, count+1);
map.put(str, count+1);
}
String[] strArr = new String[max];
for(String key : map.keySet()) {
int num = map.get(key);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < num; i++) {
sb.append(key);
}
String rs = sb.toString();
strArr[num-1] = strArr[num-1] != null ? strArr[num-1]+rs : ""+rs;
}
StringBuilder sb = new StringBuilder();
for(int i = strArr.length-1; i >= 0; i--) {
sb.append(strArr[i] == null ? "" : strArr[i]);
}
String result = sb.toString();
return result;
}
}