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