58. Length of Last Word

题目描述:

Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.

If the last word does not exist, return 0.

Note: A word is defined as a character sequence consists of non-space characters only.

Example:

Input: "Hello World"
Output: 5

我的思路:

        我有一句脏话不知当讲不当讲,这道题真的很烦啊,一开始把空格当作一个长度为零的单词了,不对。

        就像评论说了not fun at all。搞清楚了就好了,直接翻转整个句子,如果是空格并且i = 0的话,直接break。i 不是零什么也不做。不是空格的话就把计数加一。

我的代码:

class Solution:
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        i = 0
        for x in s[::-1]:
            if x == ' ':
                if i != 0:
                    break
            else:
                i += 1
        return i

Discuss:

def lengthOfLastWord(self, s):
    return len(s.rstrip(' ').split(' ')[-1])    # 1 line版本
def lengthOfLastWord(self, s):    # 这个思路也很好,直接在原字符串上查找
    ls = len(s)
    # slow and fast pointers
    slow = -1
    # iterate over trailing spaces
    while slow >= -ls and s[slow] == ' ':
        slow-=1
    fast = slow
    # iterate over last word
    while fast >= -ls and s[fast] != ' ':
        fast-=1
    return slow - fast

学到:

  1. rstrip() 删除 string 字符串末尾的指定字符(默认为空格).strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
  2. split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值