Java&LeetCode 初入门——058. 最后一个单词的长度

Java&LeetCode 初入门——058. 最后一个单词的长度

文内代码全部采用JAVA语言。

题目

给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。

示例:

输入: "Hello World"
输出: 5

个人解法

看到评论区很多小伙伴疑惑,其实题目中指的 “不存在最后一个单词” 指的其实是:字符串全都是 空格 或者是 空字符串 这种里面没有单词的情况。比如 "Hello World"和"Hello World      "在这里最后一个单词都是world,哪怕world后面空格再多,也是最后一个单词。

首先想到的是按照空格对字符串进行分片,也就是用split,分片后计算最后一个子字符串的长度即可。用三元运算符控制没有单词时的返回值。

执行用时: 7 ms, 在Length of Last Word的Java提交中击败了31.16% 的用户
效果马马虎虎,不算太好。

public int lengthOfLastWord(String s) {
		String[] array=s.split(" ");
		return (array.length==0) ?  0:array[array.length-1].length();
}

大神解法

本题依然没有官方解法。观摩评论区大神。

思路

去掉首尾空格之后,查找最后一个空格的位置,再做减法。
非常巧妙。

算法

执行用时: 5 ms, 在Length of Last Word的Java提交中击败了71.22% 的用户。
相当优秀了!

class Solution {
    public int lengthOfLastWord(String s) {
        s = s.trim();
        return s.length() - 1 - s.lastIndexOf(' ');
    }
}

思路简单,不做赘述。

猜你喜欢

转载自blog.csdn.net/qq_27480345/article/details/86100678