当前位置: 首页 > article >正文

15-最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

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

方法一:使用字符串分割

可以使用字符串的 split 方法将字符串按空格分割成单词数组,然后取数组中的最后一个单词,计算其长度。

function lengthOfLastWord(s: string): number {
    // 使用 split 方法按空格分割字符串
    const words = s.trim().split(/\s+/);
    // 如果分割后的数组不为空,返回最后一个单词的长度
    if (words.length > 0) {
        return words[words.length - 1].length;
    }
    return 0;
}

// 示例调用
const s = "Hello World";
const length = lengthOfLastWord(s);
console.log("最后一个单词的长度是:", length);
复杂度分析
  • 时间复杂度:O(n),其中 n 是字符串的长度。trim 方法和 split 方法都需要遍历字符串。
  • 空间复杂度:O(m),其中 m  是分割后单词的数量。

方法二:反向遍历

从字符串的末尾开始反向遍历,跳过末尾的空格,然后计算最后一个单词的长度。

function lengthOfLastWord(s: string): number {
    let end = s.length - 1;
    // 跳过末尾的空格
    while (end >= 0 && s[end] === ' ') {
        end--;
    }
    let start = end;
    // 计算最后一个单词的长度
    while (start >= 0 && s[start]!== ' ') {
        start--;
    }
    return end - start;
}

// 示例调用
const s2 = "   fly me   to   the moon  ";
const length2 = lengthOfLastWord(s2);
console.log("最后一个单词的长度是:", length2);
复杂度分析
  • 时间复杂度:O(n),最坏情况下需要遍历整个字符串。
  • 空间复杂度:O(1),只使用了常数级的额外空间。

方法三:使用正则表达式匹配

使用正则表达式匹配最后一个单词,然后计算其长度。

function lengthOfLastWord(s: string): number {
    const match = s.match(/\w+(\s+|$)/g);
    if (match) {
        const lastWord = match[match.length - 1].trim();
        return lastWord.length;
    }
    return 0;
}

// 示例调用
const s3 = "luffy is still joyboy";
const length3 = lengthOfLastWord(s3);
console.log("最后一个单词的长度是:", length3);
复杂度分析
  • 时间复杂度:O(n),正则表达式匹配需要遍历字符串。
  • 空间复杂度:O(m),其中 m  是匹配到的单词数量。

综上所述,方法二(反向遍历)在空间复杂度上表现最优,且代码相对简洁,是比较推荐的实现方式。


http://www.kler.cn/a/559526.html

相关文章:

  • 全面汇总windows进程通信(三)
  • Transformer Decoder 详解
  • ThinkPHP(TP)如何做安全加固,防webshell、防篡改、防劫持、TP漏洞防护
  • 【Gin-Web】Bluebell社区项目梳理4:帖子相关接口开发及实现
  • Unity 中导入的VRM模型渲染为VRoid风格
  • 【每日八股】Redis篇(二):数据结构
  • Deepin(Linux)安装MySQL指南
  • Nginx学习笔记:常用命令端口占用报错解决Nginx核心配置文件解读
  • <02.23>Leetcode100
  • Linux-Ansible自动化运维
  • 用 PyMuPDF 和 Pillow 打造 PDF 超级工具
  • mysql实时同步到es
  • CSS通过webkit-scrollbar设置滚动条样式
  • 10. 九转金丹炼矩阵 - 矩阵置零(标记优化)
  • DeepSeek等LLM对网络安全行业的影响
  • 欢乐力扣:同构字符串
  • 使用Python和正则表达式爬取网页中的URL数据
  • WSL2下ubuntu开启NFS服务
  • STM32MP157A单片机移植Linux驱动
  • 算法日记21:SC72(最小生成树):prim的priority_queue()堆优化