leetcode58.最后一个单词的长度

题目:

给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

示例:

输入:s = “Hello World”
输出:5

思路:

一开始想的是从前往后找,发现不成立,后边可能有多个空格。
从后往前找
方法1,使用字符串分割函数,直接分割,首先判空。然后如果分割后字符串长度大于0,即单词个数大于0,返回最后一个单词的长度,如果都是空格组成的,那分割完后,就没有了,要在最后返回0。
方法2,分两种情况,最后是空格或者不是空格,当遍历到最后是空格时,尾指针一直往前移动,直到不是空格,跳出循环,然后进入到下一循环,遍历到不是空格,开始对字符串长度计数,顺序执行,当不满足条件时,即再碰到空格,跳出循环,往后执行,返回长度,而且这个遍历过程包括了判空操作

class Solution(object):
    def lengthOfLastWord(self, s):
        """
        :type s: str
        :rtype: int
        """
        # if len(s) == 0:
        #     return 0
        # s = s.split( )
        # if len(s) > 0:
        #     return len(s[-1])
        # return 0
        k = 0
        end = len(s) - 1
        while end >= 0 and s[end] == " ":
            end -= 1
        while end >= 0 and s[end] != ' ':
            k += 1
            end -= 1
        return k
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值