原題目鏈接:58. 最后一個單詞的長度
題目描述:
給你一個字串 s,由若干單詞組成,單詞之間用空格隔開,回傳字串中最后一個單詞的長度,如果不存在最后一個單詞,請回傳 0 ,
單詞 是指僅由字母組成、不包含任何空格字符的最大子字串,
示例 1:
輸入:s = "Hello World"
輸出:5
示例 2:
輸入:s = " "
輸出:0
提示:
1 <= s.length <= 104
s 僅有英文字母和空格 ' ' 組成
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/length-of-last-word
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
做題思路:
- 首先這道題,我們要判斷出一共有三種情況
- 第一種,字串只有空格的,例如題目給出的 s = " ",第二種,末尾沒有空格的,例如題目給出的 s = "Hello World",第三種,末尾有空格的,例如 s = "Hello World "
- 針對以上三種情況,創建 end 指標,和 start 指標進行處理,end 指標指向字串最后一個位置
3.1 先用 end 指標進行字串全是空格或者字串末尾是空格的處理
3.2 在 end 指標進行完處理之后,把 start 指標指向當前 end 所在的位置,因為在此基礎上開始計算字母個數,遇到空格的時候就停止
3.3 那么 end 指標位置 減去 start 指標位置就等于最后一個單詞長度了
廢話不多說,直接上代碼,為了讓各位看官更能清晰理解,我的代碼寫得不精簡,我的代碼里加了大量的注釋,相信各位看官可以理解,如果我有些沒寫清楚或者寫錯的,可以評論區或者私信我喔
public int lengthOfLastWord(String s) {
//創建end指標,end指標的作用是用來處理末尾是空格的情況
int end = s.length() - 1;
//代表全是空格,因為陣列的長度為0
if(end < 0) return 0;
//把末尾是空格的情況進行處理
while(end >= 0 && s.charAt(end) == ' ') end--;
//代碼執行到這里,說明已經處理好了末尾是空格的情況
//創建start指標,開始計算末尾有多少個字符
//注意這里是要從處理完末尾是空格的位置上開始計算
int start = end;
while(start >= 0 && s.charAt(start) != ' ') start --;
//因為當start進入while回圈的時候,end是不變的
//當start跳出while回圈的時候,說明這個單詞已經遍歷好了
//所以只需要用end - start就能得出這個單詞的長度
return end - start;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/261338.html
標籤:其他
