每日一道 LeetCode (13):最后一个单词的长度

极客挖掘机

共 1157字,需浏览 3分钟

 · 2020-08-09

每天 3 分钟,走上算法的逆袭之路。

前文合集

每日一道 LeetCode 前文合集

代码仓库

GitHub:https://github.com/meteor1993/LeetCode

Gitee:https://gitee.com/inwsy/LeetCode

题目:最后一个单词的长度

题目来源:https://leetcode-cn.com/problems/length-of-last-word/

给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。

如果不存在最后一个单词,请返回 0 。

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

示例:

输入: "Hello World"
输出: 5

解题思路

今天这道题可以说是相当的简单,感觉大家看完题以后都应该有思路。

一个字符串,比如 「Hello World」 ,我们识别最后一个字符串是靠 space (空格) 进行识别的,那么只要我倒着检测整个字符串,遇到第一个空格停下来,就找到了最后一个字符串。

需要注意的是我们需要跳过末尾的所有 space 。

代码实现

代码比较简单,就是一个逆序循环,如下:

public int lengthOfLastWord(String s) {
    int count = 0;
    boolean flag = false;
    for (int i = s.length() - 1; i >= 0; i--) {
        if (flag && s.charAt(i) == ' ') {
            break;
        }
        if (s.charAt(i) != ' ') {
            flag = true;
            count++;
        }
    }
    return count;
}

解释一下,这里面第二个判断 s.charAt(i) != ' ' 是只要当前不是 space ,我们就增加计数。

而其中 flag 变量的作用就是,我们从后往前循环的时候,需要跳过所有的末尾 space ,只有从后往前数遇到第一个非 space 才会开始计数。

今天这道题很简单,我就不多说了,实在理解有困难的同学可以在编辑工具里面多 debug 几次(悄悄加一句,我遇到看不懂的代码都是这么干的)。


感谢阅读



浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报