1. 程式人生 > >leetcode的python實現 刷題筆記58:最後一個單詞的長度(取巧的做法和全網最正確的做法)

leetcode的python實現 刷題筆記58:最後一個單詞的長度(取巧的做法和全網最正確的做法)

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

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

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

示例:

輸入: "Hello World"
輸出: 5

一.取巧的做法

思路:

1.首先判斷這個字串是否為空,如果是就返回為0.然後使用python的字串split()方法將字串分割,返回最後一個字串的長度即可。

2.這種做法比較投機取巧,實際上,當你測試其他非字母的單詞時,一樣會出現答案。

3.而題目中說的非常清楚,一個單詞是指由字母組成,但不包含任何空格的字串。

總結:

1.split() 通過指定分隔符對字串進行切片,如果引數 num 有指定值,則僅分隔 num 個子字串。

裡面什麼都不加的時候,預設只要是空格型別的都會被當做分割的標誌,例如空格、換行(\n)、製表符(\t)等。

2.除此之外,其實split() 還能通過按照指定的分隔符對字串進行切片,並返回一個列表。例如str.split(',')

3.len() 方法在常規用法,一般是使用在列表上的。但實際上,它的返回物件可以是字元、列表、元組等的長度或專案個數。

class Solution(object):
    def lengthOfLastWord(self, string):
        """
        :type s: str
        :rtype: int
        """
        if len(string) == 0:
            return 0
        string = string.split()
        if len(string) > 0:
            print()
            if string[-1] == '':
                return 0
            return len(string[-1])
        return 0


sl = Solution()
print(sl.lengthOfLastWord("Hello World"))
print(sl.lengthOfLastWord("Hello 23!"))
print(sl.lengthOfLastWord("Hello!"))
print(sl.lengthOfLastWord(""))

二.考慮的比較全面的做法

思路:

1.將傳遞的字串進行分割,如果是空字串就直接返回0.如果長度大於0,就繼續判斷最後一個字串的長度是否大於0?如果是就開始判斷這個字串是否全部為字母,如果是就返回這個單詞的長度。除此之外的都返回0.

總結:

1.在這個用例裡我們會學到幾個字串非常好用的方法,當判斷是否含字母或者數字時,可以達到事半功倍的效果。

2.用isdigit函式判斷是否全為數字,如果是就返回true

3.用isalpha判斷是否全為字母,如果是就返回true

4.isalnum判斷是否全為數字和字母的組合,如果是就返回true

class Solution(object):
    def lengthOfLastWord(self, string):
        """
        :type s: str
        :rtype: int
        """
        string = string.split()
        if len(string) > 0:
            if len(string[-1]) > 0:
                if string[-1].isalpha():
                    return len(string[-1])
        return 0


sl = Solution()
print(sl.lengthOfLastWord("Hello World"))
print(sl.lengthOfLastWord("Hello 23!"))
print(sl.lengthOfLastWord("Hello!"))
print(sl.lengthOfLastWord(""))