소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요.
중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다.
첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다.
첫 줄에 중복문자가 제거된 문자열을 출력합니다.
ksekkset
kset
import java.util.*;
public class Main {
public String solution(String str){
char[] charArr=str.toCharArray();
ArrayList<Character> charArr2 = new ArrayList<>();
for(char x : charArr){
if(!charArr2.contains(x)){
charArr2.add(x);
}
}
String answer="";
for(char x : charArr2){
answer+=x;
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner sc= new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
return;
}
}
문자열을 char 배열로 바꾸고 for문을 통해 arraylist로 이동 이미 한번넣은것은 넣지않으며 중복을 제거해나간다.
후에 다시 answer에 차례대로 넣으며 가공된 문자열로 변형시켜준다.
import java.util.*;
class Main {
public String solution(String str){
String answer="";
for(int i=0; i<str.length(); i++){
//System.out.println(str.charAt(i)+" "+i+" "+str.indexOf(str.charAt(i)));
if(str.indexOf(str.charAt(i))==i) answer+=str.charAt(i);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.print(T.solution(str));
}
}
여러번 왔다갔다하는 나의 코드보다 훨씬 깔끔하고 메모리차지도 덜할듯 싶다.