天天看點

leetcode 58 Length of Last Word(最後一個單詞長度)

題目要求:

給一個包含大寫或者小寫以及空格的字元串,傳回這個串最後一個單詞的長度。如果最後一個的單詞不存在,那麼傳回0。

注意:一個單詞意味着,連續字母之間沒有空格。

示例:

Example 1

Input : "Hello World"

Output : 5

思路

既然題目讓求最後一個單詞的長度,那麼我們就從最後一位開始周遊,在輸入正常的情況下( 先不考慮空串,最後一位是空格的情況)我們直接周遊,隻要目前元素不是空格,就将長度+1,直到遇到空格,我們就退出,傳回長度即可。

本題如果想到空格來作為解決關鍵很容易得到解題思路,但這樣還不夠AC,其實本題易出錯的點也是空格的判定,如果遇到空格就傳回的話,那麼最後一位(或者幾位)都是空格怎麼辦?如”a ",實際輸出1,按照上述思路卻為0。是以要在遇到空格的時候再加個判斷條件(如果目前計數長度為0,那麼不return繼續周遊),這樣就能順利AC啦= = 。

主要代碼 ( C++ ):

// leetcode 009
// palindrome number
class Solution {
public:
    int lengthOfLastWord(string s) {
        int len = s.length();
        int count = 0;
        for(int i=len-1; i>=0; --i)
        {
            if(s[i] != ' ') // 思路 --> 從最後一位向前周遊如果不是空格,計數+1
                count++;
            else
                // 防止最後幾位是空格沒有計數,是以要加個限制條件。
                // 不能直接return count, 否接結果為0,如"a "
                if(count==0) continue;
                else  return count;
        }
        
        return count; // 如果字元串為空,那麼直接傳回0,是以不需要在前面進行判斷。
    }
        
};
           

原題連結:https://leetcode.com/problems/length-of-last-word/

繼續閱讀