코드
import java.util.Arrays;
public class 중복문자제거_ {
public static void main(String[] args) {
String value = "112233112ㅁㄴㅇㅁㄴㅇ2334551123";
String answer = "";
int len = value.length();
for(int i = 0 ; i<len ;i++) {
//indexOf 는 가장 앞에 존재하는 문자를 반환한다.
//charAt 은 특정 위치 char를 반환한다.
//따라서 아래 조건문은 첫 번째 존재하는 문자와 인덱스 위치만 참이된다.
if(value.indexOf( value.charAt(i)) == i ) {
answer += value.charAt(i);
}
}
System.out.println(answer);
Character[] array = value.chars()
.distinct()
.mapToObj(num->((char)num))
.toArray(Character[]::new);
System.out.println(Arrays.toString(array));
}
}
결과
123ㅁㄴㅇ45
[1, 2, 3, ㅁ, ㄴ, ㅇ, 4, 5]
중복 문자 제거는 indexOf 메서드 동작방식에 의존한다.
indexOf()는 주어진 문자에 해당하는 가장 첫 번째 위치 인덱스를 리턴한다.
즉, 대상이 첫 번째 위치로 특정되어 있다.
이를 활용해 반환된 인덱스와 배열을 순회하는 인덱스가 같으면 중복을 제거할 수 있다.