Leetcode--最后一个单词的长度(58)

题目描述:给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0。

  

 

 

具体思路:可以分为两种情况:(1)字符串末尾不含“ ”,例如“hello world”。在这种情况下,只需要从字符串末尾开始向前扫描到第一个空格停止即可。(2)字符串末尾含有“ ”,例如“hello world   ”。在这种情况下先去除结尾的空格,从第一个非空格位置开始向前扫描到第一个空格为止。

解法一:

 1 class Solution:
 2     def lengthOfLastWord(self, s: str) -> int:
 3         end = len(s)-1
 4         while end >= 0 and s[end] == ' ':
 5             end -= 1
 6         if end == -1:    #s=''
 7             return 0
 8         start = end
 9         while start >= 0 and s[start] != ' ':
10             start -= 1
11         return end-start

时间复杂度O(n) 空间复杂度O(1)

解法二:利用内置函数

1 class Solution:
2     def lengthOfLastWord(self, s: str) -> int:
3         return len(s.rstirp().split(" ")[-1])

此种方法虽然书写简单,但是并没有用到什么方法,且需要按空格进行分词,当字符串较长时相比而言时间复杂度会更高。

 

posted @ 2020-03-25 21:27  eltShawn  阅读(151)  评论(0编辑  收藏  举报