LeetCode-58-最后一个单词的长度
in LeetCode with 0 comment

LeetCode-58-最后一个单词的长度

in LeetCode with 0 comment

原题地址:最后一个单词的长度

给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。

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

说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:

输入: "Hello World"
输出: 5

从后往前扫描

题目要求找到最后一个单词的长度,只需要先去除字符串右边的空格,然后从后往前扫描,找到第一个空格,它到字符串尾部的距离就是最后一个单词的长度。

具体的实现代码如下:

/**
 * @param {string} s
 * @return {number}
 */
const lengthOfLastWord1 = function(s) {
    s = s.trimEnd(); // 去除右边的空格
    // 从后往前扫描
    for (let i = s.length - 1; i >= 0; i --) {
        // 找到第一个空格
        if (s[i] === ' ') {
            // 返回空格到尾部的距离
            return s.length - i - 1;
        }
    }
    // 没有找到空格,说明没有单词或只有一个单词,直接返回字符串的长度的即可
    return s.length;
};

测试:

let start = new Date();
const test = lengthOfLastWord1;
console.log(test("Hello World")); // 5
console.log(new Date().getTime() - start.getTime()); // 9

时间复杂度: 一次遍历,时间复杂度为$O(N)$
空间复杂度: 常数级额外空间,空间复杂度为$O(1)$