문자열 s의 마지막 단어 길이 반환
공백 + 문자로 이루어져 있으며, 최소 하나의 단어가 들어있음
/**
* @param {string} s
* @return {number}
*/
var lengthOfLastWord = function(s) {
const split = s.split(' ');
for (let i = split.length - 1; i >= 0; i--) {
if (split[i] !== '')
return split[i].length;
}
};
문자열을 split해서 배열로 담아두고
뒤에서부터 순회하면서 빈 문자열이면 넘어가고 아니라면 바로 길이 반환
split 특성 상 공백 기준으로 잘라도 공백이 연속으로 있으면 빈 문자열이 결과에 들어가기 때문
Accepted
Runtime 54ms (Beats 39.19%)
Memory 48.38MB (Beats 88.76%)
단순히 공백으로 split하고 마지막 인덱스 값 길이를 반환하면 되겠네? 라고 생각했는데 공백이 연속으로 있을 때는 결과 배열에 빈 문자열이 들어가는 것을 이번에 알았다. 다른 방법이 없을까 생각하다가 인자 기준에 단어 하나는 꼭 들어간다는 말에 그냥 뒤에서부터 순회하면서 비어있지 않은 문자열을 발견하면 반환하는 것으로 했다. 그리고나서 다른 사람들은 어떻게 했을까 궁금해서 찾아보니 우선 trim으로 양 끝 공백을 지운 후 진행하는 것을 보았다. 그렇게 하고 나면 split의 마지막 인덱스 값의 길이를 반환해도 되고, split 하지 않고 뒤에서부터 카운트하며 공백을 만나면 멈추는 방법도 있었다. 쉬운 문제라 빠르게 통과했더라고 하더라도 이렇게 다른 사람들 솔루션을 보는 것도 꽤 재미있고 도움이 되는 것 같다!