【leetcode】58. 最后一个单词的长度

48 阅读1分钟

leetcode-58.png

这一题比较简单,要最后一个单词的长度,如果直接说要第一个单词的长度,那就直接遍历就好了,现在要最后一个单词的长度,就反向遍历。

var lengthOfLastWord = function (s) {
    let index = s.length - 1
    // 去除后面的空格
    while (s[index] === ' ') index--
    let wordLength = 0
    // 边界控制 + 空格判断
    while (index >= 0 && s[index] !== ' ') {
        index--
        wordLength++
    }
    return wordLength
};

麻烦版

再次写这一题,得出一个比较"难懂"的代码

var lengthOfLastWord = function (s) {
    let n = s.length;
    let flag = false;
    let res = 0;
    for (i = n - 1; i >= 0; --i) {
        // 前面两个if来排除末尾的空格
        if (i === n - 1 && s[i] === " ") flag = true;
        if (flag && s[i] === " ") continue;
        // 重置flag
        if (s[i] !== " ") flag = false;
        // 计数字母的长度
        if (!flag && s[i] !== " ") {
            res++;
        } else {
            break;
        }
    }
    return res;
};