first-try
import java.util.*;
class Solution {
public String solution(String input_string) {
StringBuilder sb = new StringBuilder();
Set<Character> set = new HashSet<>();
for(int i = 0 ; i < input_string.length(); i++){
char thisCh = input_string.charAt(i);
if(sb.toString().contains(Character.toString(thisCh)))
continue;
if(!set.contains(thisCh)){
set.add(thisCh);
}else{
if(thisCh != input_string.charAt(i-1)){
sb.append(thisCh);
}
}
}
// sort by asc
char[] answer = sb.toString().toCharArray();
Arrays.sort(answer);
sb.setLength(0);
for(char ch : answer){
sb.append(ch);
}
return (sb.toString().equals("")) ? "N" : sb.toString();
}
}
문자열 순회하면서 임의로 조건 만들어서 검사해주어 풀었음
second-try
(다른 사람 풀이)
class Solution {
public String solution(String input_string) {
input_string = "." + input_string + ".";
StringBuilder sb = new StringBuilder();
for(char i = 'a'; i <= 'z'; i++){
int size = input_string.split(i + "+").length;
if(size >= 3)
sb.append(i);
}
// return
return (sb.length() != 0)? sb.toString() : "N";
}
}
외톨이 알파벳이란? ⇒ 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나누어진 알파벳
따라서 각 알파벳으로 split() 했을 때 나누어지는 개수가 3개 이상이면 외톨이 알파벳임
예외사항으로 검사하는 알파벳이 문자열 양끝단에 존재하면 외톨이 알파벳임에도 split() 했을 때 개수가 1이므로 검사 시작전 문자열에 “.” + 문자열 “.” 해주기