題目要求:
給一個包含大寫或者小寫以及空格的字元串,傳回這個串最後一個單詞的長度。如果最後一個的單詞不存在,那麼傳回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,是以不需要在前面進行判斷。
}
};