알고리즘(Algorithm)
[Algorithm] 중복문자제거
XDXDX
2023. 3. 24. 14:37
1. 문제
소문자로 된 한 개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성
중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지
2. 예시
apple
aple
3. 코드
public class Main {
public String solution(String str){
String ans = "";
for(int i =0;i<str.length();i++){
if(str.indexOf(str.charAt(i)) == i){
ans += str.charAt(i);
}
}
return ans;
}
public static void main(String[] args) {
Main case6 = new Main();
Scanner in = new Scanner(System.in);
String str = in.nextLine();
System.out.println(case6.solution(str));
}
- 문자 길이만큼 for문 돌리기
- indexOf() 사용해 i번째 문자와 비교 후 같으면 ans에 저장
- 예를 들어, apple의 문자에 중복되는 값을 없앨 경우, apple의 길이는 5.
- i = 0 일 경우, str.charAt(0) = a이고 a의 indexOf()는 0이다.
- i와 indexO()의 값이 같으므로 ans에 저장
- i = 2 일 경우, str.charAt(2) = p이고 p의 indexOf()는 앞에 있는 p가 되므로 i와 indexOf()의 값이 일치하지 않음
- 이렇게 반복문이 돌면 return 값은 aple이 된다.
4. 마무리
public String solution(String str){
String ans = "";
char[] ch = str.toCharArray();
for(char i : ch){
if(!ans.contains(String.valueOf(i))) ans += i;
}
return ans;
}
- 다른 방법들을 찾아보니 cotains() 메서드 사용하는 법이 있었다.
- String변수를 char 배열로 변환 후 ch의 길이만큼 for문을 돌린다.
- String.valueOf(i)의 값이 ans에 포함되어 있지 않으면 true로 ans에 저장
- 아니면 false
[contains()]
String 메서드
String 문자열 값에 특정 문자열이 포함되어 있는지 확인
ex) String str = "Hello My name is 000";
contains("Hello") => true
contains("abc") => false