FireDrago

Lv0 - 중복문자 제거 (자바) 본문

코딩테스트/프로그래머스

Lv0 - 중복문자 제거 (자바)

화이용 2023. 6. 12. 11:00

문제설명

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.

 

입출력예

my_string result
"people" "peol"
"We are the world" "We arthwold"

생각정리

1. 처음에는 저장순서가 있으면서, 중복허용 하지 않는 LinkedHashSet 사용해서 풀었다.

import java.util.*;
class Solution {
    public String solution(String my_string) {
        String answer = "";
        LinkedHashSet<Character> hs  = new LinkedHashSet<>();
        
        for (int i=0; i<my_string.length(); i++) {
            hs.add(my_string.charAt(i));
        }
        
        for (char ch : hs) {
            answer += ch;
        }
        return answer;
    }
}

문제는 해결했으나 , 시간이 너무 길게 걸렸고 다른 방법을 생각해보았다. 

 

1. indexOf( ) 메서드의 특성을 활용할 수 있다. 

    -  이 메서드는 char 값이 중복될 경우 가장 앞의 index를 반환한다.

 

2. 이를 이용해 for 문의 i가 my_string 의 indexOf( ) 와 일치할때만 String answer 에 더해주는 방법을 사용했다.

String answer = "";

for (int i=0; i<my_string.length(); i++){
	if (i == my_string.indexOf(my_string.charAt(i)) {
    	answer += my_string.charAt(i);
    }
}
return answer;