class Solution {
public String solution(String my_string) {
for (int i = my_string.length()-1; i >= 0; i--) {
answer += my_string.charAt(i);
}
return answer;
}
}
성능 저하로 reveres() 함수 사용하기!!
reverse( ) 메서드
reverse( ) : 저장되어 있는 문자열의 순서를 거꾸로 나열하는 메서드다.
StringBuffer 클래스와 StringBuilder 클래스의 reverse( ) 메서드를 사용하면 간단하게 풀 수 있다
그럼 여기서 StringBuffer 클래스와 StringBuilder 클래스가 뭐냐 ❗❗
👁🗨 StringBuffer 클래스
String 클래스는 인스턴스를 생성할 때 지정된 문자열을 변경할 수 없지만 StringBuffer 클래스는 변경이 가능하다!
내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있으며, StringBuffer인스턴스를 생성할 때 그 크기를 지정할 수 있다.
🔎 주요 메서드
- .append( ) : StringBuffer 인스턴스가 저장하고 있는 문자열 뒤에 덧붙인다
- .delete(int start, int end) : 시작위치(start) 부터 끝 위치(end) 사이에 있는 문자를 제거한다 (단, 끝 위치의 문자는 제외!)
- .deleteCharAt(int index) : 지정된 위치(index)의 문자를 제거한다.
- .insert(int pos, String str) : 두번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가한다. (pos는 0부터 시작)
- .replace(int start, int end, string str) : 지정된 범위(start ~ end)의 문자들을 주어진 문자열로 바꾼다. (end 위치의 문자는 범위에 포함 되지않는다!)
- .reverse( ) : 문자열의 순서를 거꾸로 나열한다.
- .setCharAt(int index, char ch) : 지정된 위치의 문자를 주어진 문자(ch)로 바꾼다
- .toString( ) : StringBuffer 인스턴스의 문자열을 String으로 반환한다.
- .subString(int start) or .subString(int start, int end)
: 지정된 범위 내의 문자열을 String으로 뽑아서 반환한다.
👁🗨 StringBuilder 클래스
StringBuffer은 멀티쓰레드에 안전하도록 동기화되어 있다.
멀티쓰레드로 작성된 프로그램이 아닌 경우, StringBuffer의 동기화는 불필요하게 성능만 떨어뜨리게 된다.
그래서 StringBuffer에서 쓰레드의 동기화만 뺀 StringBuffer를 사용한다.
두 클래스는 완전히 똑같은 기능으로 작성되어 있어서 StringBuffer 대신에 StringBuilder를 사용하도록 바꾸기만 하면 된다!
class Solution {
public String solution(String my_string, int s, int e) {
//해당 String을 뽑는다
String answer = my_string.substring(s,e+1);
//뒤집어서 다른 변수에 저장한다
StringBuffer sb = new StringBuffer(answer);
String reversedStr = sb.reverse().toString();
//원본에다 뒤집은 걸 대체한다
my_string = my_string.replaceAll(answer, reversedStr);
return my_string;
}
}
'알고리즘 테스트 공부' 카테고리의 다른 글
세로읽기 (0) | 2024.04.01 |
---|---|
배열만들기 1 (0) | 2024.04.01 |
문자열 다루기 기본 (0) | 2024.03.31 |
배열만들기 6 (0) | 2024.03.30 |
문자열 내림차순으로 배치하기 (0) | 2024.03.30 |