Shuffle String (leetcode 1528)
문제
solution1
- 속도: 59ms
var restoreString = function (s, indices) {
let output = "";
for (let i = 0; i < s.length; i++) {
output += s[indices.indexOf(i)];
}
return output;
};
const s = "codeleet";
const indices = [4, 5, 6, 7, 0, 2, 1, 3];
restoreString(s, indices); // 'leetcode'
indexOf를 평소 잘 안써보다보니 생각을 못했다.
속도도 빠른데 코드도 간단해서 가독성도 좋다.
배열의 요소가 뒤섞여 있는데 내가 원하는 어떤 순서대로 가져오고 싶을 때 indexOf를 사용하자!
solution2 (my answer)
- 속도: 60ms (93.3%)
- 메모리: 44.8mb (25.7%)
var restoreString = function (s, indices) {
const len = s.length;
let i = 0;
Z;
let j = 0;
let obj = {};
// obj 생성
while (i < len) {
obj[indices[i]] = s[i];
i += 1;
}
// shuffle string
let shuffleString = "";
while (j < len) {
shuffleString += obj[j];
j += 1;
}
return shuffleString;
};
const s = "codeleet";
const indices = [4, 5, 6, 7, 0, 2, 1, 3];
restoreString(s, indices); // 'leetcode'
- 객체에 key는 숫자(0부터), value는 string 값을 매칭 시킨다.
- 0부터 값 가져와서 스트링 조합
속도는 제출할 때마다 조금씩 차이가 있었지만 최대 93.5%까지 나왔다.
즉, 객체를 검색 용도로 사용하는건 속도측면에서도 좋고 코드 쓰기도 편리한 것 같다.
댓글남기기