UpDown Dev Story
알고리즘 연습 - 중복문자제거 본문
아래 강의를 보면서 연습하고 기록하고 있습니다
문제
소스코드 (내가 짠 것)
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
public class Algorithm {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String inputString = sc.next();
Set<Character> characters = new LinkedHashSet<>();
char[] chars = inputString.toCharArray();
for (char aChar : chars) {
characters.add(aChar);
}
StringBuilder sb = new StringBuilder("");
for (Character character : characters) {
sb.append(character);
}
System.out.println(sb);
}
}
강사님이 짠 소스코드
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));
}
}
내가 짠 것 정답해설
- 사용자에게 문자를 입력받고
- add한 순서를 살리면서 중복을 제거하기위해 LinkedHashSet을 사용
- 사용자가 입력한 문자를 char[] 로 변환
- char[]를 loop 돌리면서 LinkedHashSet 에 add
- LinkedHashSet에 들어있는 값을 loop 돌리면서 StringBuilder에 append하여 출력
강사님이 짠 것 정답해설
- 사용자에게 문자를 입력받고
- loof 돌면서 indexof를 사용해 처음으로 그 문자의 위치를 찾아 틀린 것은 넘기고
- 정답을 만들어 출력한다
참고
indexOf() 는 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환하며
만약 찾지 못했을 경우 "-1"을 반환합니다.
'Algorithm' 카테고리의 다른 글
알고리즘 연습 - 유효한 팰린드롬 (0) | 2021.05.23 |
---|---|
알고리즘 연습 - 회문 문자열 (0) | 2021.05.23 |
알고리즘 연습 - 특정 문자 뒤집기 (0) | 2021.05.21 |
알고리즘 연습 - 단어 뒤집기 (0) | 2021.05.21 |
알고리즘 연습 - 문장 속 단어 (0) | 2021.05.21 |
Comments