본문 바로가기

Coding Test

(CodingTest) : 4일차 문자열 뒤집기 (3-3)

 

# 모르거나 헷갈리는 부분

1) 문자열의 정렬은 어떻게? --> StringBuffer, StringBuilder라는 클래스 사용

 

** StringBuffer, StringBuilder 주요 메서드

.append( ) : StringBuffer 인스턴스가 저장하고 있는 문자열 뒤에 덧붙인다

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb);  // 출력: Hello World

 

.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으로 뽑아서 반환한다.

 

* 문자열도 길이를 구할 수 있음

 String my_string ---> my_string.length()는 9

 

* 문자열의 위치값

  String my_string = "hello";
  System.out.println(my_string.charAt(0));  // 출력: h
  System.out.println(my_string.charAt(1));  // 출력: e
  System.out.println(my_string.charAt(4));  // 출력: o

 

# StringBuffer vs StringBuilder 차이

사용자가 스레드에 접근할 때(=사용자가 어떤 기능을 사용할 때) 동시성 문제(=동시에 접근했을 때)가 있는데, 

동기화가 자동으로 되는 클래스는 StringBuffer이고, StringBuilder는 따로 설정을 해주지 않는 경우 동기화 자동으로 안 됨.

--> 여러 스레드라는 것은 예를 들어, a, b라는 사용자가 동시에 상품을 구매할 때와 같은 상황

       즉, 여러 클래스 객체가 동시에 실행되는 상황

 

 

 

 

 

 

1. 내가 작성한 답(오답)

class Solution {
    public String solution(String my_string) {
        
        //문자열을 split("")으로 나눈 후, 배열에 넣고
        //배열의 순서를 바꿔보기
        
        List<String> str = ArrayList<>();
        
         // my_string.split(""); // 'm', 'y','_',,,,
         str.add(my_string.split(""));
         str.sort("", reverse)??
   
        return str;
    }
}

 

 

 

2. 정답

StringBuffer클래스 사용

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        StringBuffer sb = new StringBuffer(my_string);
        
        answer = sb.reverse().toString();
        
        return answer;
    }
}

 

 

--> StringBuffer 예시 (문자 추가)

String my_test = "This";
StringBuffer str = new StringBuffer(my_test);  // my_test로 StringBuffer 객체 생성
str.append(" was good");  // 문자열을 뒤에 추가
System.out.println(str.toString());  // "This was good" 출력