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

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  是匹配到的单词数量。

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

相关文章:

  • 体验用ai做了个python小游戏
  • ECOLOGY流程表单字段由单行文本改成多行文本
  • DeepSeek + Claude 提升效果
  • 当C#邂逅Deepseek, 或.net界面集成deepseek
  • Weblogic 反序列化漏洞深度剖析与复现
  • MouseWithoutBorder鼠标指针闪烁、变大+AltTab有程序执行的问题解决方案
  • 【算法】787. 归并排序
  • 指标管理项目建设的高频问题和解决思路
  • 房屋价格 - 高级回归技术
  • Visual Studio Code 集成 Baidu Comate
  • Spring Boot 内置工具类
  • LeetCode刷题---哈希表---347
  • UE_C++ —— Container TMap
  • scratch猜年龄互动小游戏 2024年12月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析
  • 问卷数据分析|SPSS实操之相关分析
  • Windows 图形显示驱动开发-IoMmu 模型
  • Docker 安装 Apache
  • HBuilderX中,VUE生成随机数字,vue调用随机数函数
  • JS逆向实战三:1688工厂信息
  • Qt ModbusTCP和ModBusRTU读写数据
  • 甩掉“肥胖刺客”,科学减重指南来了
  • 全国层面首次!《防震减灾基本知识与技能大纲》发布
  • 在地球另一端的交流,架起2万公里间更多共赢的桥梁
  • 国内首例侵入式脑机接口系统前瞻性临床试验:受试者已能用意念玩游戏
  • 咸宁市委常委、市纪委书记官书云调任湖北省司法厅副厅长
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报