문제
내가 작성한 정답
// String
class Solution {
public String solution(String my_string, int s, int e) {
String answer = my_string.substring(0,s);
for(int i=e; i>=s; i--){
answer += my_string.charAt(i);
}
answer += my_string.substring(e+1,my_string.length());
return answer;
}
}
// Stringbuffer
class Solution {
public String solution(String my_string, int s, int e) {
StringBuilder answer = new StringBuilder();
answer.append(my_string.substring(0,s));
for(int i = e; i>=s; i--){
answer.append(my_string.charAt(i));
}
answer.append(my_string.substring(e+1,my_string.length()));
return answer.toString();
}
}
//stream
import java.util.stream.*;
class Solution {
public String solution(String my_string, int s, int e) {
String answer = "";
return IntStream.range(0,my_string.length())
.mapToObj(i-> (i>=s && i<=e)?my_string.charAt(s+e-i):my_string.charAt(i))
.map(String::valueOf)
.collect(Collectors.joining());
//.reduce("",String::concat);
}
}
다른 사람들의 정답
StringBuilder - reverse()
String은 불변이라 reverse()메서드가 존재하지 않고 가변인 StringBuilder와 StringBuffer에만 존재한다.
reverse()
은 해당 객체 안의 문자열 순서를 완전히 뒤집는 역할을 한다.class Solution {
public String solution(String my_string, int s, int e) {
StringBuilder answer = new StringBuilder(my_string.substring(s, e + 1));
answer.reverse();
return my_string.substring(0, s) + answer + my_string.substring(e + 1);
}
}
class Solution {
public String solution(String myString, int s, int e) {
return myString.substring(0, s) + new StringBuilder(myString.substring(s, e + 1)).reverse().toString() + myString.substring(e + 1);
}
}
while
class Solution {
public String solution(String my_string, int s, int e) {
char[] arr = my_string.toCharArray();
while (s < e) {
char temp = arr[s];
arr[s++] = arr[e];
arr[e--] = temp;
}
return new String(arr);
}
}
Share article