알파벳 소문자로만 이루어진 어떤 문자열에서, 2회 이상 나타난 알파벳이 2개 이상의 부분으로 나뉘어 있으면 외톨이 알파벳이라고 정의합니다.
문자열 "edeaaabbccd"를 예시로 들어보면,
문자열 "eeddee"를 예시로 들어보면,
문자열 input_string이 주어졌을 때, 외톨이 알파벳들을 알파벳순으로 이어 붙인 문자열을 return 하도록 solution 함수를 완성해주세요. 만약, 외톨이 알파벳이 없다면 문자열 "N"을 return 합니다.
1 ≤ input_string의 길이 ≤ 2,600
input_string은 알파벳 소문자로만 구성되어 있습니다..
input_string
"edeaaabbccd"
"eeddee"
"string"
"zbzbz"
result
"de"
"e"
"N"
"bz"
input을 돌면서 이전값과 비교했을 때 똑같은 값이면 계속 나아간다.
나아가다가 다른 값이 나오게 된다면 그 값을 또 측정한다.
나왔던 알파벳을 따로 저장해두면서 다른 값이 나왔을 때 따로 저장된 곳에 들어가 있으면 result에 넣는다.
result를 정렬해서 string 타입으로 출력한다.
나왔던 알파벳들을 저장하기 위한 input을 list로 설정한다.
띄워져서 나온 알파벳을 저장하기 위한 TreeSet을 설정한다.
처음 값을 ' '로 설정한다.
for문을 돌며 input_String을 하나하나 탐색한다.
탐색하며 전 값과 동일 하면 아무 작업도 안한다.
전 값과 다르면 input에 add를 하는데 만약 이미 input에 있다면 result에 add한다.
result에 계속 add해도 set이므로 중복 값은 허용되지 않아서 하나의 값만 들어간다.
treeset이므로 따로 sort하지 않아도 정렬이 되어서 나온다.
정렬된 값을 string으로 출력
import java.util.*;
class Solution {
public String solution(String input_string) {
List<Character> input = new ArrayList<>();
List<Character> result = new ArrayList<>();
String answer = "";
char a = ' ';
for(int i = 0; i < input_string.length(); i++){
if(input_string.charAt(i) != a){
if(input.contains(input_string.charAt(i)) && !result.contains(input_string.charAt(i))){
result.add(input_string.charAt(i));
}else{
input.add(input_string.charAt(i));
}
}
a = input_string.charAt(i);
}
Collections.sort(result);
for(int j = 0; j < result.size(); j++){
answer += result.get(j);
}
if(answer == ""){
answer = "N";
}
return answer;
}
}
import java.util.*;
class Solution {
public String solution(String input_string) {
List<Character> input = new ArrayList<>();
Set<Character> result = new TreeSet<>();
String answer = "";
char a = ' ';
for(int i = 0; i < input_string.length(); i++){
if(input_string.charAt(i) != a){
if(input.contains(input_string.charAt(i))){
result.add(input_string.charAt(i));
}else{
input.add(input_string.charAt(i));
}
}
a = input_string.charAt(i);
}
for(Character b : result){
answer += b;
}
if(answer == ""){
answer = "N";
}
return answer;
}
}