目录
题目描述
实现
题目描述
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 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”。 提示: 1 <= s.length <= 10^4 s 仅有英文字母和空格 ' ' 组成 s 中至少存在一个单词
链接:链接
实现
方法1
func lengthOfLastWord(s string) int {
started, length := false, 0
for i := len(s) - 1; i >= 0; i-- {
if string(s[i]) == " " {
if !started {
continue
}
break
}
started = true
length++
}
return length
}
方法2
转换为rune切片处理也可,但是这样会产生新切片,占用内存会更大:
func lengthOfLastWord(s string) int {
started, length := false, 0
r := []rune(s)
for i := len(r) - 1; i >= 0; i-- {
if r[i] == 32 {
if !started {
continue
}
break
}
started = true
length++
}
return length
}
验证
var s1 = " fly me to the moon "
n1 := lengthOfLastWord(s1)
fmt.Println(n1) // 4
var s2 = "luffy is still joyboy"
n2 := lengthOfLastWord(s2)
fmt.Println(n2) // 6
var s3 = "Hello World"
n3 := lengthOfLastWord(s3)
fmt.Println(n3) // 5
提交结果