코린이의 소소한 공부노트

[LeetCode/Easy] 2000. Reverse Prefix of Word 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2000. Reverse Prefix of Word

무지맘 2023. 1. 9. 00:42

1. Input

1) 문자열 word

2) 문자 ch

 

2. Output

1) word에서 ch가 처음 나타나는 위치를 찾은 후, 0부터 해당 위치까지의 문자열을 뒤집은 후 나머지 문자열을 그대로 뒤에 붙인 문자열을 반환

- wordch가 없다면 아무 일도 일어나지 않는다.

 

3. Constraint

1) 1 <= word.length <= 250

2) word는 영어 소문자로만 이루어져 있다.

3) ch에는 영어 소문자 1개가 들어 있다.

 

4. Example

Input: word = "abcdefd", ch = 'd' -> Output: "dcbaefd“

설명: d가 처음 나타나는 위치는 3이므로, 0부터 3까지의 문자열 abcd를 뒤집어 dcba로 만들고 나머지 efd를 뒤에 붙여 dcbaefd를 반환한다.

 

5. Code

1) 첫 코드(2022/06/14)

int index = -1;

for(int i=0 ; i<word.length() ; i++)
    if(word.charAt(i) == ch){
        index = i; break;
}

if(index == -1) return word;

char[] pre = word.substring(0,index+1).toCharArray();
String rest = word.substring(index+1,word.length());

char c;
for(int i=0 ; i<pre.length/2 ; i++){
    c = pre[i];
    pre[i] = pre[pre.length-1-i];
    pre[pre.length-1-i] = c;
}

return new String(pre) + rest;

2) 다시 풀어본 코드(2023/01/09)

int index = -1;
String answer = "";

for(int i=0 ; i<word.length() ; i++)
    if(word.charAt(i) == ch){
        index = i; break;
    }

if(index == -1) answer = word;
else{
    char[] w = word.toCharArray();
    for(int i=0 ; i<=index/2 ; i++){
        char c = w[i];
        w[i] = w[index-i];
        w[index-i] = c;
    }
    answer = new String(w);
}

return answer;

- 1번보다 훨씬 좋은 코드가 됐다.