012 중복 문자 제거
StringBuilder를 사용하는 해법부터 알아보자. 이 해법에서는 대개 주어진 문자열의 문자를 순회하며 고유한 문자를 포함하는 새 문자열을 구성해야 한다(자바에서 문자열은 불변이므로 주어진 문자열에서 그냥 문자를 제거할 수는 없다).
StringBuilder 클래스는 indexOf()라는 주어진 문자열에서 명시한 부분 문자열(이 문제에서는 명시한 문자)이 처음 나오는 인덱스를 반환하는 메서드를 제공한다. 따라서 한 가지 가능한 해법은 주어진 문자열의 문자를 순회하며 현재 문자에 indexOf() 메서드를 호출해 -1을 반환하면(음수는 StringBuilder가 현재 문자를 포함하지 않는다는 뜻이다) 해당 문자를 StringBuilder에 하나씩 추가하는 것이다.
public static String removeDuplicates(String str) {
char[] chArray = str.toCharArray(); // 또는 charAt(i)를 사용한다
StringBuilder sb = new StringBuilder();
for (char ch : chArray) {
if (sb.indexOf(String.valueOf(ch)) == -1) {
sb.append(ch);
}
}
return sb.toString();
}