题目:
给你一个字符串 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