String(문자열) 다루기 - 0106. 중복 문자 제거
public static String solution(String str) {
String answer = "";
char[] chars = str.toCharArray();
for(int i=0; i<chars.length-1; i++) {
if (Character.isLowerCase(chars[i])) {
for (int j = i + 1; j < chars.length; j++) {
if(chars[i] == chars[j]) {
chars[j] = Character.toUpperCase(chars[j]);
}
}
}
}
for(char c : chars) {
if(Character.isLowerCase(c)) {
answer += c;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(solution(str));
}
public static String solution(String str) {
String answer = "";
char[] chars = str.toCharArray();
for(int i=0; i<chars.length; i++) {
if(i == str.indexOf(chars[i])) answer += chars[i];
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(solution(str));
}
나의 풀이의 경우 두 단계를 거친다.
1단계 : 중복 문자 찾기
처음 등장하는 문자는 소문자로, 중복 문자는 대문자로 구분하여
문자열의 문자를 하나씩 비교하며 중복 문자를 찾는다.
2단계 : 중복 문자 제거
소문자인 경우만 저장하여 중복 문자를 제거한다.
강의에서는 String
클래스의 indexOf()
메소드를 활용했다.
해당 메소드는 특정 문자가 문자열에서 처음 등장하는 index를 반환한다.
따라서 현재 문자의 위치와 반환된 index를 비교하여 중복 여부를 판별한다.
강의 방식이 코드도 간결하고 메소드의 기능을 잘 활용한 방식인 것 같다.