나는 마지막 말을 할 것입니다.
3728 단어 leetcodejavascript
Given a string
s
consists of some words separated by spaces, return the length of the last word in the string. If the last word does not exist, return0
.
A word is a maximal substring consisting of non-space characters only.
LeetCode 챌린지를 해본 적이 있다면 그들이 당신의 코드에 대해 테스트할 모든 종류의 예제를 제시하는 데 얼마나 재능이 있는지 알 것입니다. 3줄 솔루션은 'if' 문이 'if/else if/else' 문이 됩니다. 꿈도 꾸지 못한 단어와 문자가 코드와 인내심을 테스트하기 위해 숲에서 나옵니다. 이 도전도 예외는 아니었습니다.
우리는 배열의 마지막 요소를 호출하는 방법을 찾아야 한다는 것을 알고 있었습니다. 그러나 거기에 도달하려면 실행 가능한 어레이가 필요했습니다. string
s
을 사용하여 .split(' ')
를 사용하여 단어를 분해했습니다. 우리는 콘솔에서 실험했고 우리가 올바른 길을 가고 있다는 것을 발견했습니다. 시작 코드 사용:var lengthOfLastWord = function(s) { }
예 #1, s = "Hello World!"
:우리는 마지막 단어의 길이를 얻었다! 첫 번째 예는 성공입니다. 분할이 작동하여 배열에 두 개의 항목(및 길이 2)을 제공한 후 전체 배열 길이에서 하나를 빼서 배열의 마지막 단어("World")를 제공할 수 있었습니다. 그것의 길이를 파악하면 5가 있습니다. 언론에 경고하십시오!
예시 #2:
s = " "
! 원래 우리는 이 값을 if/else
문의 일부로 설명하려고 했습니다.if (s === "") {
return 0
}
그러나 숨겨진 예를 통해 우리는
s = " (many spaces) "
및 기타 광기를 설명하지 않았다는 것을 깨달았습니다. 다행히도 이 블로그 게시물에서 투명 오리와 대화하는 동안 원래 솔루션을 단축하고 예제 #1과 같은 코드를 사용할 수 있다는 것을 깨달았습니다. 고마워, 오리!var lengthOfLastWord = function(s) {
let words = s.split(' ')
let lastWord = words[words.length-1].length
return lastWord
}
이것은 제공된 예제 모두에 적용됩니다. 끝났지? 좀 빠지는. 우리는
s = "a "
로 커브볼을 던졌습니다. 글쎄요, 누군가 게으르거나 미쳤습니다. 다시 그룹화하고 Google에서 공백을 자르는 방법을 시간입니다. .trim()
를 입력하세요. 문자열에서 게으른/미친 공백을 제거하는 멋지고 작은 방법입니다. 형제인 trimEnd(trimRight라고도 함) 및 trimStart(trimLeft라고도 함)를 사용하면 보다 구체적인 트리밍이 필요한 경우 "읽을 수 있는"콘텐츠 전후를 트리밍할 수 있습니다. 모든 가능성을 고려해야 하므로 일반 트림을 사용하는 것이 좋습니다. 더 많은 깜짝 공간 비탄을 방지하기 위해 함수의 맨 처음에 추가했습니다.var lengthOfLastWord = function(s) {
let trimTheFat = s.trim()
let words = trimTheFat.split(' ')
let lastWord = words[words.length-1].length
return lastWord
}
그러나이 현재 솔루션은 작동하지 않습니다. "a"를 나누면 ["a", ""]가 남습니다. 이 배열에는 두 개의 항목이 있으며 하나는 환영하지 않습니다. 기술적으로 원래 문자열의 마지막 공식 단어는 "a"입니다. 마지막 ""을 터뜨려야 합니다!
.pop()
를 사용해 볼까요? "words"배열의 마지막 요소가 ""이면 끝에서 제거하고 없는 단어를 반환합니다.var lengthOfLastWord = function(s) {
let trimTheFat = s.trim()
let words = trimTheFat.split(' ')
if (words[words.length-1] === ""){
words.pop()
return words.length
} else {
let lastWord = words[words.length-1]
return lastWord.length
}
}
한 가지 주의할 점은--
.pop()
는 원래 배열의 구성을 변경하는 파괴적인 방법입니다. 이것이 팝 이후에 "단어"를 반환했을 때 매달려 있는 큰따옴표 없이 배열을 반환한 이유입니다. 지침에 명시되지 않았고 배가 고파서 약간의 파괴로 괜찮았습니다.여러 예제를 테스트한 후 솔루션을 제출했고 통과했습니다. 채이와 나는 의기양양했고 개발자의 신이 된 기분이었다. 알림-- 이것은 쉬운 도전이었습니다. 우리를 흥분시키는 데 많은 시간이 걸리지 않았습니다. 하지만 이 미친 세상을 처음 접하는 두 명의 학생들에게는 우리가 괜찮았다고 생각합니다.
Reference
이 문제에 관하여(나는 마지막 말을 할 것입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nmhummel/i-will-have-the-last-word-803텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)