문제
내가 작성한 정답
class Solution {
public String solution(String my_string, int num1, int num2) {
String answer = "";
for(int i=0; i<my_string.length(); i++){
if(i==num1) answer += my_string.charAt(num2);
else if (i==num2) answer += my_string.charAt(num1);
else answer += my_string.charAt(i);
}
return answer;
}
}다른 사람들의 정답
class Solution {
public String solution(String my_string, int num1, int num2) {
String answer = "";
char[] ch = my_string.toCharArray();
ch[num1] = my_string.charAt(num2);
ch[num2] = my_string.charAt(num1);
answer = String.valueOf(ch);
return answer;
}
}
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public String solution(String myString, int num1, int num2) {
// 문자열을 한 글자씩 쪼개어 스트림으로 만든 뒤 List<String>으로 수집
// 예: "abc" -> ["a","b","c"]
List<String> list = Arrays.stream(myString.split(""))
.collect(Collectors.toList());
// Collections.swap(List<?> list, int i, int j)
// 리스트에서 인덱스 i번째 요소와 j번째 요소의 위치를 서로 맞바꾼다.
// 내부적으로는 temp 변수 하나 두고 list.set() 세 번 하는 것과 동일.
Collections.swap(list, num1, num2);
// 리스트의 요소들을 다시 하나의 문자열로 이어 붙임
// 예: ["a","c","b"] -> "acb"
return String.join("", list);
}
}Share article