【LeetCode】58.最后一個(gè)單詞的長度

最后一個(gè)單詞的長度

給定一個(gè)僅包含大小寫字母和空格 ' ' 的字符串,返回其最后一個(gè)單詞的長度。

如果不存在最后一個(gè)單詞,請返回 0 。

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

示例:

輸入: "Hello World"
輸出: 5

分析

按照題目的意思,字符串的情況有兩種:

  • 全為空格" "
  • 單詞左右有若干空格" Hello World "

解法一

class Solution {
    public int lengthOfLastWord(String s) {
        String[] strs = s.split(" ");
        if(strs.length == 0) return 0;
        
        return strs[strs.length - 1].length();
    }
}

解法二

標(biāo)簽:字符串遍歷
從字符串末尾開始向前遍歷,其中主要有兩種情況
第一種情況,以字符串"Hello World"為例,從后向前遍歷直到遍歷到頭或者遇到空格為止,即為最后一個(gè)單詞"World"的長度5
第二種情況,以字符串"Hello World "為例,需要先將末尾的空格過濾掉,再進(jìn)行第一種情況的操作,即認(rèn)為最后一個(gè)單詞為"World",長度為5
所以完整過程為先從后過濾掉空格找到單詞尾部,再從尾部向前遍歷,找到單詞頭部,最后兩者相減,即為單詞的長度
時(shí)間復(fù)雜度:O(n),n為結(jié)尾空格和結(jié)尾單詞總體長度

作者:guanpengchn
鏈接:https://leetcode-cn.com/problems/two-sum/solution/hua-jie-suan-fa-58-zui-hou-yi-ge-dan-ci-de-chang-d/

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;
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容