LeetCode.58 最后一个单词的长度|刷题打卡

92 阅读1分钟

掘金团队号上线,助你 Offer 临门! 点击 查看详情

题目描述:

原题地址

给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

示例一

输入:s = "Hello World"
输出:5

示例二

输入:s = " "
输出:0

提示

  • 1 <= s.length <= 10410^4
  • s 仅有英文字母和空格 ' ' 组成

思路分析

要找最后一个单词,从后面往前找即可,考虑到末尾可能有空格,先找到最后一个非空格,然后再从当前位置往前找第一个空格,找不到则说明往前皆为一个单词,如"Hello " ,"Hello"; 找到则说明此位置开始到刚刚找到的最后一个字母为最后一个单词,如"Hello world"。

AC代码

class Solution {
    fun lengthOfLastWord(s: String): Int {
        var tail = s.length - 1
        while (tail >= 0 && s[tail] == ' ') {
            tail--
        }
        var head = tail
        while (head >= 0 && s[head] != ' ') {
            head--
        }
        return tail - head
    }
}

总结

这题是“真正”的easy题。

再接再厉。