문제 설명
영문 문자열을 받아 중복된 알파벳이 많은 순으로 출력하는 메소드를 작성
요구 사항
- 동일한 중복 횟수를 가진 알파벳끼리는 오름차순 정렬
- 대소문자는 구별 안 함 (출력은 소문자)
- 문자열 길이는 20 이하
예)
입력 : “Hello World” 출력 : lodehrw
입력 : “Funny Java” 출력 : anfjuvy
package Test02;
import java.util.*;
public class problem_No2 {
public static void main(String[] args) {
problem_No2 ch02Method = new problem_No2();
String str = "Helloworld";
ch02Method.ch02String(str);
}
private void ch02String(String str) {
char arr[] = str.toCharArray();
Map<Character, Integer> hm = new HashMap<Character, Integer>();
for (int i = 0; i < arr.length; i++) {
if (!hm.containsKey(arr[i])) {
hm.put(arr[i], 0);
}
hm.put(arr[i], hm.get(arr[i]) + 1);
}
List<Character> listKeySet = new ArrayList<>(hm.keySet());
Collections.sort(listKeySet, (value1, value2) -> (hm.get(value1).compareTo(hm.get(value2))));
for (Character key : listKeySet) {
System.out.println("key : " + key + " , " + "value : " + hm.get(key));
}
}
}
'Java 문제' 카테고리의 다른 글
문자열을 정수로 바꾸기 (0) | 2021.05.07 |
---|---|
[Java] HTTP Access 로그 분석 (0) | 2021.05.07 |
[Java] 문자열이 따옴표(“ 또는 ‘)로 쌓였는지 검사 (0) | 2021.05.07 |
[Java] 입력 문자열 모두 연결하여 하나의 문자열로 (0) | 2021.05.07 |
[Java] 입력문자열이 null 인경우 빈문자열(“”) 반환 (0) | 2021.05.07 |