算法题---最后一个单词的长度(乐乐独记)

1、题目描述

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

2、解题思路

我们可以使用倒叙遍历的方式,当碰到第一个字母的时候开始计数,再次碰到空格的时候结束计数就可计算出最后一个单词的长度。

3、代码示例

public class L58_LengthOfLastWord {
          
   

    public static void main(String[] args) {
          
   
        L58_LengthOfLastWord lengthOfLastWord = new L58_LengthOfLastWord();
        System.out.println("" + lengthOfLastWord.lengthOfLastWord("   fly me   to   the moon  "));
    }

    public int lengthOfLastWord(String s) {
          
   
        // 最后一个单词的长度
        int lastWordLength = 0;
        boolean isSpace = true;
        for (int i = s.length() - 1; i >= 0; i--){
          
   
            // 由于题目中,说了只有字母和空格
            // 当不是空格是就是最后一个字母开始了
            // 32 就是空字符
            isSpace = (s.charAt(i) == 32);
            // 这里不为空格的话,说明匹配到单词
            if (!isSpace){
          
   
                lastWordLength ++;
            }
            // 等于空说明又走到空字符串了,长度不为0,所以已经匹配到单词了
            if (isSpace && lastWordLength != 0){
          
   
                return lastWordLength;
            }
        }
        // 返回长度
        return lastWordLength;
    }
}
经验分享 程序员 微信小程序 职场和发展