Java&LeetCode 初入門——058. 最後一個單詞的長度
阿新 • • 發佈:2019-01-14
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(' ');
}
}
思路簡單,不做贅述。