코딩테스트 풀이/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부터 해당 위치까지의 문자열을 뒤집은 후 나머지 문자열을 그대로 뒤에 붙인 문자열을 반환
- word에 ch가 없다면 아무 일도 일어나지 않는다.
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번보다 훨씬 좋은 코드가 됐다.