每日一道 LeetCode (13):最後一個單詞的長度
阿新 • • 發佈:2020-08-10
每天 3 分鐘,走上演算法的逆襲之路。
前文合集
程式碼倉庫
GitHub: https://github.com/meteor1993/LeetCode
Gitee: https://gitee.com/inwsy/LeetCode
題目:最後一個單詞的長度
題目來源:https://leetcode-cn.com/problems/length-of-last-word/
給定一個僅包含大小寫字母和空格 ' ' 的字串 s,返回其最後一個單詞的長度。如果字串從左向右滾動顯示,那麼最後一個單詞就是最後出現的單詞。
如果不存在最後一個單詞,請返回 0 。
說明:一個單詞是指僅由字母組成、不包含任何空格字元的 最大子字串。
示例:
輸入: "Hello World"
輸出: 5
解題思路
今天這道題可以說是相當的簡單,感覺大家看完題以後都應該有思路。
一個字串,比如 「Hello World」 ,我們識別最後一個字串是靠 space (空格) 進行識別的,那麼只要我倒著檢測整個字串,遇到第一個空格停下來,就找到了最後一個字串。
需要注意的是我們需要跳過末尾的所有 space 。
程式碼實現
程式碼比較簡單,就是一個逆序迴圈,如下:
public int lengthOfLastWord(String s) { int count = 0; boolean flag = false; for (int i = s.length() - 1; i >= 0; i--) { if (flag && s.charAt(i) == ' ') { break; } if (s.charAt(i) != ' ') { flag = true; count++; } } return count; }
解釋一下,這裡面第二個判斷 s.charAt(i) != ' '
是隻要當前不是 space ,我們就增加計數。
而其中 flag
變數的作用就是,我們從後往前迴圈的時候,需要跳過所有的末尾 space ,只有從後往前數遇到第一個非 space 才會開始計數。
今天這道題很簡單,我就不多說了,實在理解有困難的同學可以在編輯工具裡面多 debug 幾次(悄悄加一句,我遇到看不懂的程式碼都是這麼幹的)。