링크
https://codingbat.com/prob/p190570
CodingBat Java Warmup-1 missingChar
Given a non-empty string and an int n, return a new string where the char at index n has been removed. The value of n will be a valid index of a char in the original string (i.e. n will be in the range 0..str.length()-1 inclusive).missingChar("kitten", 1)
codingbat.com
문제
문자열과 문자열 인덱스가 주어지면, 해당 인덱스의 문자를 제거해서 반환하는 함수를 만들어라.
풀이
딱히 아이디어는 없는 문제
그냥 여러 알고리즘 문제를 풀 때 사용될 일이 많을 것 같으므로, 여러 방법을 알아보는데 의의를 일단 둠
방법
1. StringBuilder 클래스의 deleteCharAt 메소드
public String missingChar(String str, int n) {
StringBuilder str2 = new StringBuilder(str);
str2 = str2.deleteCharAt(n);
return str2.toString();
}
주의 : StringBuilder 클래스의 메소드 이므로,
String -> StringBuilder클래스로 변경해야 해당 메소드를 사용할 수 있으며,
return이 String타입으로 정해져 있으므로, StringBuilder클래스의 toString()으로 다시 String으로 변경해 리턴해야한다
<StringBuilder 클래스의 메소드>
2. replace
char -> char
String -> String 2가지 존재
char -> char
String -> String
charAt은 리턴값이 char형이므로, 변환이 필요
1.String 클래스의 메소드 String.valueOf(해당 타입)
public String missingChar(String str, int n) {
String c = String.valueOf(str.charAt(n));
str = str.replace(c, "");
return str;
}
2. Character형의 함수 toString
public String missingChar(String str, int n) {
char c = str.charAt(n);
str = str.replace(Character.toString(c), "");
return str;
}
3.substring이용
매개변수 하나(n): n인덱스부터 끝까지
매개변수 두개(a, b) : a 인덱스부터 b-1인덱스 까지
ex)
str.substring(2) + str.substring(0,2) 인 경우,
hello -> llo(2 인덱스부터 끝까지) he (0인덱스부터 2-1 인덱스까지)
public String missingChar(String str, int n) {
str = str.substring(0,n)+str.substring(n+1);
return str;
}
<참고자료>
자바8 공식문서
https://docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
'Algorithm > 기타(기업등)' 카테고리의 다른 글
[CodingBat/Java] countXX (0) | 2021.09.30 |
---|---|
[CodingBat/Java] front22 (0) | 2021.09.30 |
[SAP/C++] BST from postorder (0) | 2021.04.24 |
[SAP/C++] Mirror Tree (0) | 2021.04.24 |
[SAP/C++] reversed Linked List (0) | 2021.04.24 |