58 最後一個單詞的長度

給定一個僅包含大小寫字母和空格 ’ ’ 的字符串,返回其最後一個單詞的長度。

如果不存在最後一個單詞,請返回 0 。

說明: 一個單詞是指由字母組成,但不包含任何空格的字符串。

示例:

輸入: “Hello World”
輸出: 5

思路分析:

  1. 字符串遍歷,從字符串末尾開始向前遍歷,其中主要有兩種情況;
  2. 第一種情況,以字符串"Hello World"爲例,從後向前遍歷直到遍歷到頭或者遇到空格爲止,即爲最後一個單詞"World"的長度5;
  3. 第二種情況,以字符串"Hello World “爲例,需要先將末尾的空格過濾掉,再進行第一種情況的操作,即認爲最後一個單詞爲"World”,此時的長度爲5;
  4. 所以完整過程爲先從後過濾掉空格找到單詞尾部,再從尾部向前遍歷,找到單詞頭部,最後兩者相減,即爲單詞的長度;
  5. 時間複雜度:O(n),n爲結尾空格和結尾單詞總體長度。
class Solution { 
    public int lengthOfLastWord(String s) {
        int end = s.length() - 1;
        // 先找到結尾開始不是空格的字符
        while(end >= 0 && s.charAt(end) == ' ') {
            end--;
        }
        if(end < 0) {
            return 0;
        }
        // 然後計算單詞的長度
        int start = end;
        while(start >= 0 && s.charAt(start) != ' ') {
            start--;
        }
        return end - start;
    }
}

有問題歡迎留言哦

參考:

https://leetcode-cn.com/problems/length-of-last-word/solution/

https://draw.mdnice.com/algorithm/58.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章