programmers

[JAVA] ☆ 한 번만 등장한 문자 - 문자열정렬

아잠만_ 2024. 3. 15. 10:27
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
입출력 예 #1
"abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.

풀이 1) toCharArray > Arrays.sort를 통한 문자열 정렬

import java.util.Arrays;
class Solution {
    public String solution(String s) {
        String answer = "";
        for(int i=0; i<s.length(); i++){
            for(int j=0; j<s.length();j++){
                if(i!=j && s.charAt(i)==s.charAt(j)){
                    s=s.replace(""+s.charAt(i)," ");
                }
            }
        }
        answer = s.replace(" ","");
        
        char[] chars = answer.toCharArray();
        Arrays.sort(chars);
        answer = new String(chars);

        return answer;
    }
}

 

풀이 2) Stream을 활용한 풀이

import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;

class Solution {
    public String solution(String s) {
        return Arrays.stream(s.split(""))
                .collect(Collectors.groupingBy(s1 -> s1))
                .entrySet()
                .stream()
                .filter(entry -> entry.getValue().size() <= 1)
                .map(Map.Entry::getKey)
                .sorted()
                .collect(Collectors.joining());
    }
}