目录
给你一个字符串 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
提交结果
