給定一個僅包含大小寫字母和空格 ' ' 的字符串,返回其最后一個單詞的長度。
如果不存在最后一個單詞,請返回 0 。
說明:一個單詞是指由字母組成,但不包含任何空格的字符串。
示例:
輸入: "Hello World"
輸出: 5
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/length-of-last-word
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
- 思路:
從字符串末尾開始向前遍歷,其中主要有兩種情況
第一種情況,以字符串"Hello World"為例,從后向前遍歷直到遍歷到頭或者遇到空格為止,即為最后一個單詞"World"的長度5
第二種情況,以字符串"Hello World "為例,需要先將末尾的空格過濾掉,再進行第一種情況的操作,即認為最后一個單詞為"World",長度為5
所以完整過程為先從后過濾掉空格找到單詞尾部,再從尾部向前遍歷,找到單詞頭部,最后兩者相減,即為單詞的長度
//created by fivezm on 23,7 2019
public static int lengthOfLastWord(String s) {
int end = s.length() - 1;
while (end >= 0 && s.charAt(end) == ' ') // 把末尾的所有空格都去掉
end--;
if (end < 0) //如果end指針為負,則證明 0 下標(biāo)也是空格,要不然也不會end--為負
return 0;
int start = end;
while (start >= 0 && s.charAt(start) != ' ')
start--;
return end - start; // 末尾下標(biāo)減開始下標(biāo)等于已判斷不為空格的下標(biāo)
}