알파벳 소문자로만 이루어진 어떤 문자열에서, 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나뉘어 있으면 외톨이 알파벳이라고 정의합니다.
문자열 "edeaaabbccd"를 예시로 들어보면,
문자열 "eeddee"를 예시로 들어보면,
문자열 input_string이 주어졌을 때, 외톨이 알파벳들을 알파벳순으로 이어 붙인 문자열을 return 하도록 solution 함수를 완성해주세요. 만약, 외톨이 알파벳이 없다면 문자열 "N"을 return 합니다.
input_string | result |
---|---|
"edeaaabbccd" | "de" |
"eeddee" | "e" |
"string" | "N" |
"zbzbz" | "bz" |
import java.util.HashMap;
class Solution {
public String solution(String input_string) {
String answer = "";
HashMap<Character, Integer> countExpose = new HashMap<>();
HashMap<Character, Integer> countDivide = new HashMap<>();
char prevChar = '-';
for(int i = 0; i < input_string.length(); i++){
char tmp = input_string.charAt(i);
countExpose.put(tmp, countExpose.getOrDefault(tmp, 0) + 1);
if(prevChar != tmp){
countDivide.put(tmp, countDivide.getOrDefault(tmp, 0) + 1);
prevChar = tmp;
}
}
for(char a : countExpose.keySet()){
if(countDivide.get(a) >= 2 && countExpose.get(a) >= 2){
answer += a;
}
}
if(answer == ""){
answer = "N";
}
return answer;
}
}
나타난 횟수, 그리고 분리 된 횟수를 HashMap에 저장해두었다가 나중에 최종 결과를 비교 해 보면 된다.
아주 간단한 문제.