본문 바로가기
Java 문제

[Java] 중복 문자 구하기

by 두리두리안 2021. 5. 7.

문제 설명

영문 문자열을 받아 중복된 알파벳이 많은 순으로 출력하는 메소드를 작성

 

요구 사항

- 동일한 중복 횟수를 가진 알파벳끼리는 오름차순 정렬

- 대소문자는 구별 안 함 (출력은 소문자)

- 문자열 길이는 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));
        }
    }
}