나는 마지막 말을 할 것입니다.

3728 단어 leetcodejavascript
또는 적어도 이 LeetCode challenge (#58) 솔루션을 사용하여 그 안의 문자 수입니다. 제 코호트 동료인 Chay와 저는 JavaScript에서 이 문제를 해결하기 위해 짝을 이루었습니다. 규칙을 살펴보겠습니다.

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, return 0.
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()는 원래 배열의 구성을 변경하는 파괴적인 방법입니다. 이것이 팝 이후에 "단어"를 반환했을 때 매달려 있는 큰따옴표 없이 배열을 반환한 이유입니다. 지침에 명시되지 않았고 배가 고파서 약간의 파괴로 괜찮았습니다.

여러 예제를 테스트한 후 솔루션을 제출했고 통과했습니다. 채이와 나는 의기양양했고 개발자의 신이 된 기분이었다. 알림-- 이것은 쉬운 도전이었습니다. 우리를 흥분시키는 데 많은 시간이 걸리지 않았습니다. 하지만 이 미친 세상을 처음 접하는 두 명의 학생들에게는 우리가 괜찮았다고 생각합니다.

좋은 웹페이지 즐겨찾기