1. 程式人生 > >LeetCode演算法題58:最後一個單詞的長度解析

LeetCode演算法題58:最後一個單詞的長度解析

給定一個僅包含大小寫字母和空格 ’ ’ 的字串,返回其最後一個單詞的長度。
如果不存在最後一個單詞,請返回 0 。
說明: 一個單詞是指由字母組成,但不包含任何空格的字串。
示例:

輸入: "Hello World"
輸出: 5

這個題一開始誤解了題目的意思,以為最後一個字元是空格的話也要返回0。其實是不論任何情況都返回最後一個單詞的長度。這樣的話就比較好想了,設定一個計數器,然後遍歷整個字串,在遇到非空格的時候自加1,遇到空格時清零,這樣就一直儲存了空格前一個字串的長度,但是遇到空格時要注意兩點,如果這個空格是最後一個空格時不可以清零,如果有連續的空格,也就是下一個字元還是空格時,也不清零,直接跳過直到最後一個空格才清零。最後直接返回計數值即可。
C++原始碼:

class Solution {
public:
    int lengthOfLastWord(string s) {
        int result=0;
        for (int i=0;i<s.length();i++)
        {
            if (s[i] == ' ')
            {
                if (i+1==s.length()||s[i+1]==' ')
                    continue;
                else
                {
                    result =
0; continue; } } result++; } return result; } };

python3原始碼:

class Solution:
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        return len(s.strip(' ').split(
' ')[-1])

pyhton3寫這個演算法太簡單了,因為字串有一個方法是分割字串方法split(),這裡只要用空格將字串分割然後返回最後一個字串的長度即可,另外要注意的是分割之前先用strip()方法將字串最後的空格刪除掉,否則會分割出一個空字串在最後。