본문 바로가기

알고리즘 테스트 공부

문자열 뒤집기

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