1. 程式人生 > >Java&LeetCode 初入門——058. 最後一個單詞的長度

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(' ');
    }
}

思路簡單,不做贅述。