題目:給定一個僅包含大小寫字母和空格 ‘ ‘ 的字串 s,返回其最後一個單詞的長度。
如果字串從左向右滾動顯示,那麼最後一個單詞就是最後出現的單詞。
如果不存在最後一個單詞,請返回 0 。
示例1:
輸入:”Hello World”
輸出:5
說明: 一個單詞是指僅由字母組成、不包含任何空格的最大子字串。
解法一:字串遍歷
相關標籤
* 字串
思路分析:
從字串尾部進行反序遍歷,主要有三種情況:
第一種:最後一個單詞的後邊都是空格,比如"Hello world ",此時需要把尾部的空格都過濾掉,進行第二種情況的操作
第二種:當最後一個單詞後邊沒有空格時,比如"Hello world",此時把$end賦值給$start,一直遍歷到,直到出現空格或者到字串最開始,此時結果就是:$end - $start
第三種:如果全部都是空格時,即$end < 0,返回0
PHP程式碼實現:
/**
* @param String $s
* @return Integer
*/
function lengthOfLastWord($s) {
$end = strlen($s) -1;
while($end>=0 && $s[$end] == ' '){//過濾掉最右邊的空格
$end--;
}
if($end < 0){//當全部都是空格時
return 0;
}
$start = $end;//此時最後的一位字元肯定是最後一個單詞的最後一位
while($start >= 0 && $s[$start] != ' '){//尋找最後一個單詞的開頭字元的位置
$start--;
}
return $end - $start;
}
使用:
$s = "Hello world";
var_dump(lengthOfLastWord($s));
複雜度分析:
時間複雜度: O(n)
n是結尾為空格和最後一個單詞的總長度
空間複雜度: O(n)
n是最後一個單詞的長度
解題關鍵
做演算法題,一定要善於總結和找出規律,考慮要全面,各種可能的情況都要想到。
github
以後每次題解都會上傳到這個專案
題目來源
力扣(LeetCode):https://leetcode-cn.com/problems/length-of...
本作品採用《CC 協議》,轉載必須註明作者和本文連結