每日一道算法题014 最后一个单词的长度

473 阅读1分钟

题目

leetCode 第 58 题,最后一个单词的长度 关联类型:字符串

给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。

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

 

示例 1:

输入:s = "Hello World"
输出:5
示例 2:

输入:s = " "
输出:0
 

提示:

1 <= s.length <= 104
s 仅有英文字母和空格 ' ' 组成

做题时间

class Solution {
    public int lengthOfLastWord(String s) {
       
       
       
    }
}

以上给出方法输入参数,完成作答。

题目分析

  1. 看到这道题之后,我不知道你们是咋想的,反正我第一时间想到的是 split 进行分割,大概是没救了。。。
  2. 还有一种思路是用总长度减去最后一个 ‘ ’ 所在的位置,得出最后的长度

解答分析

本文只分析本人做题思路,仅供参考,了解一种解题思想,其他各种做题思路请上网查阅。
本题提供两种解题思路,刚开始我直接就想用 split 函数进行解题,大概是没救了,,,,
第二种方式则是直接用长度相减,速度则会快一些。

解答成功:
执行耗时:1 ms,击败了38.61% 的Java用户
内存消耗:36.8 MB,击败了48.22% 的Java用户

class Solution {
    public int lengthOfLastWord(String s) {
        // 进行分割
        String[] s1 = s.split(" ");
        if (s1.length > 0) {
            //返回最后一个单词的长度
            return s1[s1.length - 1].length();
        } else {
            return 0;
        }
    }
}

解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:37.1 MB,击败了13.09% 的Java用户

class Solution {
    public int lengthOfLastWord(String s) {
    //先进行末尾空格的去除,同时也会将‘ ’空格进行去除
        s=s.trim();
        //返回总长度的下标减去最后一个空格的下标
        return s.length()-1-s.lastIndexOf(" ");
    }
}