leetcode每日一题系列-最后一个单词的长度-「原生函数」-「双指针」

183 阅读1分钟

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

[博客链接]

菜🐔的学习之路

掘金首页

[题目链接]

题目链接

[github地址]

github地址

[题目描述]

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。

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

 

示例 1:

输入:s = "Hello World"
输出:5

示例 2:

输入:s = "   fly me   to   the moon  "
输出:4

示例 3:

输入:s = "luffy is still joyboy"
输出:6

思路一:原生函数

  • java原生函数split就可以解
public int lengthOfLastWord(String s) { 
    return s.split(" ")[s.split(" ").length - 1].length();
}
  • 时间复杂度:O(nn)
  • 空间复杂度:O(nn)

思路二:双指针

  • 快慢指针从后往前扫描即可
  • 代码我就不写了用的三叶的代码
 public int lengthOfLastWord(String s) {
        int n = s.length();
        int j = n - 1;
        while (j >= 0 && s.charAt(j) == ' ') j--;
        int i = j;
        while (i >= 0 && s.charAt(i) != ' ') i--;
        return j - i;
    }

  • 时间复杂度:O(nn)
  • 空间复杂度:O(11)