• 算法题系列9·最后一个单词的长度


    目录

    题目描述

    实现


     

    题目描述

    给你一个字符串 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

    1. func lengthOfLastWord(s string) int {
    2. started, length := false, 0
    3. for i := len(s) - 1; i >= 0; i-- {
    4. if string(s[i]) == " " {
    5. if !started {
    6. continue
    7. }
    8. break
    9. }
    10. started = true
    11. length++
    12. }
    13. return length
    14. }

    方法2

    转换为rune切片处理也可,但是这样会产生新切片,占用内存会更大:

    1. func lengthOfLastWord(s string) int {
    2. started, length := false, 0
    3. r := []rune(s)
    4. for i := len(r) - 1; i >= 0; i-- {
    5. if r[i] == 32 {
    6. if !started {
    7. continue
    8. }
    9. break
    10. }
    11. started = true
    12. length++
    13. }
    14. return length
    15. }

    验证

    1. var s1 = " fly me to the moon "
    2. n1 := lengthOfLastWord(s1)
    3. fmt.Println(n1) // 4
    4. var s2 = "luffy is still joyboy"
    5. n2 := lengthOfLastWord(s2)
    6. fmt.Println(n2) // 6
    7. var s3 = "Hello World"
    8. n3 := lengthOfLastWord(s3)
    9. fmt.Println(n3) // 5

    提交结果

    7a5d0c0eb48e488183fa44e65d4ece03.png

     

     

     

  • 相关阅读:
    独立开发者学习的技术栈
    浏览器网页截屏妙用Capture node screenshot
    关于Git这一篇就够了
    [NOIP2012 提高组] 借教室(二分、差分)
    操作系统学习笔记---计算机系统概述
    【基础教程】基于Matlab画花式箱体图
    kubernetes kube-apiserver 存在SSRF漏洞
    红黑树+红黑树模拟实现map/set
    json-server搭建mock服务
    2.Android系统启动
  • 原文地址:https://blog.csdn.net/HYZX_9987/article/details/133342579