제안이 도착했습니다. 친구를 찾아 픽업하세요! 2022년 봄학기 채용 시리즈 - Swipe 질문 및 펀치 카드 활동에 참여하고 있습니다. 활동 세부 정보 를 보려면 클릭하세요 .
주제
앞뒤에 공백 문자로 구분된 여러 단어로 구성된 문자열 s가 제공됩니다. 문자열에서 마지막 단어의 길이를 반환합니다.
단어는 공백 문자를 포함하지 않고 문자로만 구성된 가장 큰 부분 문자열입니다.
출처: LeetCode 링크: leetcode-cn.com/problems/le… 저작권은 LeetCode.com에 있습니다. 상업적 복제의 경우 공식 허가에 문의하고, 비상업적 복제의 경우 출처를 표시하십시오.
示例 1:
输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5。
示例 2:
输入:s = " fly me to the moon "
输出:4
解释:最后一个单词是“moon”,长度为4。
示例 3:
输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为6的“joyboy”。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/length-of-last-word
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码
사고 분석
아이디어 1
- 먼저 문자 trim() 전후의 공백을 제거하십시오.
- 그런 다음 중간에 문자를 위한 공백으로 자르기를 시작합니다.
- 잘라낸 배열을 가져오고 길이를 가져옵니다.
- 길이에서 1을 빼고 배열의 마지막 문자열을 가져옵니다.
- 길이를 얻기 위해 줄을 자르십시오.
아이디어 2
- 먼저 문자 trim() 전후의 공백을 제거하십시오. 사실 앞의 공백을 제거할 필요가 없습니다. 우리는 그것을 trimEnd()로 바꿉니다.
아이디어 3
역순회
- 먼저 문자 앞뒤의 공백을 제거하십시오.
- 아래 첨자를 통해 값을 얻으므로 문자 길이 -1입니다.
- 길이를 구한 후 문자 앞뒤의 공백 길이를 제거하기 시작하고,
- 이제 끝에서 비교 시작, 카운터,
- 뒤에서 루핑을 시작합니다. 현재 값이 0보다 크고 현재 값이 비어 있지 않으면 카운터가 중첩되고 조건이 충족되지 않으면 값이 반환됩니다.
암호
코드 1
let lengthOfLastWord = function(s) {
/**
* 首先去除字符的前后空格 trim()
* 然后对中间的字符开始以空格切割
* 拿到切割数组,并获取长度
* 拿长度减1,拿数组的最后一个字符串
* 把字符串切割,获取长度
*
* */
let arr = s.trim().split(' ')
let lastIndex = arr.length - 1
return arr[lastIndex].split('').length
}
复制代码
코드 2
let arr = s.trimEnd().split(' ')
复制代码
코드 3
/**
* 首先还是去除字符的前后空格
* 因为我们是通过下标拿值的,所以就是字符长度-1
* 拿到长度后,开始去除字符前后的空格长度,
* 现在开始从最后开始比较,一个计数器,
* 开始从后边循环,如果当前值大于0,且当前值不等于空,计数器叠加,不满足条件时返回值
* */
let index = s.length - 1
console.log(index)
while (s[index] === ' ') {
console.log(index)
index--
}
let wordLength = 0
while (index >= 0 && s[index] !== ' ') {
wordLength++
index--
}
return wordLength
复制代码