❓ 문제
Given a string s consisting of words and spaces, return the length of the last word in the string.
단어와 공백으로 구성된 문자열 s가 주어지면 문자열의 마지막 단어 길이를 반환합니다.
A word is a maximal substring consisting of non-space characters only.
단어는 공백이 아닌 문자로만 구성된 최대 부분 문자열입니다.
Example 1
Input: s = "Hello World"
Output: 5
Explanation: The last word is "World" with length 5.
Example 2
Input: s = " fly me to the moon "
Output: 4
Explanation: The last word is "moon" with length 4.
Example 3:
Input: s = "luffy is still joyboy"
Output: 6
Explanation: The last word is "joyboy" with length 6.
❗ 내 답변
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
const splited = s.split(' ');
const result = splited.filter(s => s).map(s => s.trim());
return result[result.length - 1].length;
};
이번 문제는 너무 쉬워서 푸는 데 5분도 안 걸린 것 같다.
공백으로 문자열을 나누고,
나눠진 문자열에도 공백이 있을 수 있으니 filter()
로 제거하고,
문자열 양 끝에 포함된 공백도 한 번 더 trim()
으로 제거 시켜 줬다.
그리고 배열에 담긴 마지막 문자열의 길이를 반환!
❗ Runtime이 가장 빨랐던 답변과 비교
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
s = s.trim();
s = s.split(" ");
return s[s.length-1].length;
};
이렇게도 가능한건가..?! 싶었는데 생각해보니 가능하다.trim()
으로 문자열 양 끝의 공백을 제거하고,
공백으로 split
시켜준다.split
한 배열에 다른 공백들이 요소로 포함된다고 해도
어차피 제공된 문자열의 양 끝의 공백을 이미 제거했기 때문에
맨 마지막 요소는 적절하게 공백이 제거된 유효한 문자열이 담기게 된다.
그리고 배열에 담긴 마지막 문자열의 길이를 반환!
한 끗 차이로 내 코드보다 훨씬 깔끔한 코드였다.
❗ Memory 사용이 가장 적었던 답변과 비교
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function (s) {
let len = 0;
//loops from end to start (Backward Direction)
for (let i = s.length - 1; i >= 0; i--) {
if (s[i] === ' ' && len )
return len;
if (s[i] != ' ')
len++;
}
return len;
}
ES5/6를 사용 않고 바닐라JS로 푼 답안이다.
주어진 문자열의 뒤에서 부터 반복을 돈다.
현재 문자가 공백이 아니라면 len
을 증가시킨다.
현재 문자가 공백이고 len
이 0 아니라면 len
을 반환한다.
💡 개선 방안
너무 꼬아서 생각하지말고, 불필요한 로직은 과감히 버리자
'알고리즘 > leetCode' 카테고리의 다른 글
[leetCode] 67. Add Binary (Easy) 풀이 (0) | 2022.07.19 |
---|---|
[leetCode] 66. Plus One (Easy) 풀이 (0) | 2022.07.14 |
[leetCode] 35. Search Insert Position (Easy) 풀이 (0) | 2022.07.12 |
[leetCode] 28. Implement strStr() (Easy) 풀이 (0) | 2022.06.28 |
[leetCode] 27. Remove Element (Easy) 풀이 (0) | 2022.06.27 |