일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 제로초
- 4주 프로젝트
- LeetCode
- 토익
- 2주 프로젝트
- 렛츠기릿 자바스크립트
- js
- javascript
- 코드스테이츠
- 리트코드
- 타입스크립트
- 타입스크립트 올인원
- 타임어택
- 백준
- 코어 자바스크립트
- 리액트
- 회고
- SQL 고득점 Kit
- 프로그래머스
- codestates
- python
- til
- 파이썬
- Async
- 알고리즘
- 자바스크립트
- programmers
- 리덕스
- 정재남
- 손에 익히며 배우는 네트워크 첫걸음
Archives
- Today
- Total
Jerry
[day23][leetcode] 557. Reverse Words in a String III 본문
Problem Solving/Algorithm 문제 풀기
[day23][leetcode] 557. Reverse Words in a String III
juicyjerry 2024. 3. 7. 01:29반응형
SOLUTION 1
// SOLUTION 1
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
/*
whiltespace를 기준으로 문자를 분리
문자 요소별 접근하여 reverse
새로운 변수 선언
변수에 작업된 문자요소를 추가
다만, 추가된 후 whiltespace 추가
*/
let seperatedWords = s.split(' ');
seperatedWords = seperatedWords.map(el => el.split('').reverse().join(''));
seperatedWords = seperatedWords.join(' ');
return seperatedWords;
};
// TIME COMPLEXITY : O(n)
// SPACE COMPLEXITY : O(n)
SOLUTION 2 : Traverse and Reverse each character one by one (직접 접근)
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
let reversedWord = '';
let lastIdx = s.length - 1;
let spaceIdx = 0;
let arr = [];
for (let i = 0; i <= lastIdx; i++) {
if (s[i] === ' ' || i === lastIdx) {
let temp = '';
for (let j = i; j >= spaceIdx; j--) {
temp += s[j];
}
arr.push(temp.trim());
spaceIdx = i;
}
}
reversedWord = arr.join(' ');
return reversedWord;
};
// TIME COMPLEXITY : O(n^2)
// SPACE COMPLEXITY : O(n)
SOLUTION 3: Two Pointers : 자바스크립트에서 문자열은 불변(immutable) -> 문자열 개별 문자를 인덱스로 직접 변경 불가
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
let lastSpaceIndex = -1;
let len = s.length;
for (let strIndex = 0; strIndex <= len; strIndex++) {
if (strIndex == len || s[strIndex] == ' ') {
let startIndex = lastSpaceIndex + 1;
let endIndex = strIndex - 1;
while (startIndex < endIndex) {
let temp = s[startIndex];
s[startIndex] = s[endIndex];
s[endIndex] = temp;
startIndex++;
endIndex--;
}
lastSpaceIndex = strIndex;
}
}
console.log(s);
return s;
};
반응형
'Problem Solving > Algorithm 문제 풀기' 카테고리의 다른 글
[leetcode] [파이썬]Two Sum #001 (0) | 2024.05.18 |
---|---|
[day23][leetcode] 151. Reverse Words in a String (0) | 2024.03.07 |
[day22][leetcode] 561. Array Partition (1) | 2024.03.06 |
[day22][leetcode] 209. Minimum Size Subarray Sum (0) | 2024.03.06 |
[day22][leetcode] 167. Two Sum II - Input Array Is Sorted (0) | 2024.03.06 |