Bootstrap

58. 最后一个单词的长度

题目名称

  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
解释:最后一个单词是“joyboy”,长度为6。

提示

  • 1 <= s.length <= 10^4
  • s 仅有英文字母和空格 ' ' 组成
  • s 中至少存在一个单词

模式识别(解题过程)

  1. 模式识别:该问题主要涉及对字符串的处理和遍历,特别是对单词边界的识别。关键在于从字符串末尾开始逆向遍历,找到最后一个单词的起始和结束位置,从而计算其长度。
  2. 解题过程
    • 从字符串末尾开始遍历,跳过末尾的空格字符。
    • 当遇到非空格字符时,开始统计单词长度,继续向前遍历直到再次遇到空格字符或者到达字符串开头。

解题方法及C语言实现

1. 逆向遍历法
#include <stdio.h>
#include <string.h>

// 计算字符串中最后一个单词长度的函数
// s: 输入的字符串
int lengthOfLastWord(char *s) {
    int len = strlen(s);
    int result = 0;
    // 从字符串末尾开始,跳过末尾的空格
    while (len > 0 && s[len - 1] =='') {
        len--;
    }
    // 统计最后一个单词的长度
    while (len > 0 && s[len - 1]!='') {
        result++;
        len--;
    }
    return result;
}

概念、原理、发展、过程、计算公式、分类、应用场景

概念

最后一个单词的长度问题是在给定的由单词和空格组成的字符串中,确定最后一个单词的字符数量。

原理
  1. 逆向遍历原理:通过从字符串末尾开始遍历,首先跳过可能存在的末尾空格,然后遇到非空格字符时开始计数,直到再次遇到空格或到达字符串开头,这样就能准确获取最后一个单词的长度。
发展

此类字符串处理问题在计算机科学发展过程中一直是基础且重要的部分。随着文本处理、自然语言处理等领域的发展,对字符串中单词相关操作的需求不断增加,这种简单的单词长度计算问题也逐渐成为复杂算法的基础模块。

过程
  1. 初始化:获取字符串的长度,并初始化结果变量 result 为 0。
  2. 跳过末尾空格:从字符串末尾开始遍历,不断减少索引值,直到遇到非空格字符,这一步是为了找到最后一个单词的末尾位置。
  3. 统计单词长度:继续向前遍历,每次遇到非空格字符就将 result 加 1,直到遇到空格或到达字符串开头,此时 result 即为最后一个单词的长度。
计算公式

无特定计算公式,主要通过遍历字符串并根据字符类型进行计数操作。

分类

从算法类型上看,属于简单的字符串遍历算法。在处理过程中,根据字符是空格还是字母,采取不同的操作,以实现对最后一个单词长度的计算。

应用场景
  1. 文本处理:在文本编辑、排版等应用中,可能需要统计每行文本最后一个单词的长度,以进行格式调整或对齐操作。
  2. 自然语言处理:在简单的文本分析任务中,计算最后一个单词的长度可以作为预处理步骤,例如在判断句子结构、词性标注等任务中,作为基本的文本特征。
;