1. 程式人生 > 實用技巧 >每日一道 LeetCode (13):最後一個單詞的長度

每日一道 LeetCode (13):最後一個單詞的長度

每天 3 分鐘,走上演算法的逆襲之路。

前文合集

每日一道 LeetCode 前文合集

程式碼倉庫

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 幾次(悄悄加一句,我遇到看不懂的程式碼都是這麼幹的)。