【JS每日一算法】52.最后一个单词的长度(反向遍历)

246 阅读1分钟

给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

提示:

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

 示例:

输入: s = "Hello World"
输出: 5
解释: 最后一个单词是“World”,长度为5。

题解:

更多JS版本题解点击链接关注该仓库👀

/**
 * @description: 反向遍历   TC:O(n)  SC:O(1)
 * @author: JunLiangWang
 * @param {*} s  给定字符串
 * @return {*}
 */
function reverseTraversal(s){
    /**
     * 该方案利用反向遍历的方式,定义一个count遍历记录单词长度,
     * 然后反向遍历给定字符串s,当字符不等于空格时,count增加1,
     * 当字符等于空格时并且count不等于0时(count不等于0是为了防
     * 止多个空格的情况)证明已找到最后一个单词长度,直接返回即可,
     * 最后循环外再返回0(为了解决当给定字符串全为空格时的情况)
     */

    // 定义记录单词长度遍历
    let count=0;
    // 反向遍历给定字符串
    for(let i=s.length-1;i>=0;i--){
        // 当字符不等于空格时,此时为字母,count增加1
        if(s[i]!=' ')count++;
        // 当字符等于空格时并且count不等于0时(count不等于0是为了防
        // 止多个空格的情况)证明已找到最后一个单词长度,直接返回即可
        else if(count!=0)return count;
    }
    // 返回0(为了解决当给定字符串全为空格时的情况)
    return 0;
}

来源:力扣(LeetCode)