给你一个字符串 s
,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大
子字符串
。
示例 1:
输入:s = "Hello World" 输出:5 解释:最后一个单词是“World”,长度为 5。
示例 2:
输入:s = " fly me to the moon " 输出:4 解释:最后一个单词是“moon”,长度为 4。
示例 3:
输入:s = "luffy is still joyboy" 输出:6 解释:最后一个单词是长度为 6 的“joyboy”。
提示:
1 <= s.length <= 104
s
仅有英文字母和空格' '
组成s
中至少存在一个单词
思路:字符串中每个单词前后可能有不止一个空格,这是比较麻烦的地方,我们可以用正则表达式将字符串中的多个空格都变成一个空格,
re.sub
函数用于替换文本。\s+
是一个正则表达式,表示匹配一个或多个空白字符(包括空格、制表符等),然后我们将这些连续的空白字符替换为单个空格。.strip()
是用来移除字符串首尾的空白字符,确保字符串两边没有不必要的空格。然后对字符串用空格进行切分,就得到了每一个单词,然后返回最后一个单词的长度。
代码(Python):
class Solution(object):
def lengthOfLastWord(self, s):
s = re.sub(r'\s+', ' ', s).strip() #将多个空格用一个空格代替,且去掉首尾的空格
s = s.split(' ') #字符串按空格切分
return len(s[-1]) #返回最后一个单词的长度
思路:对于不熟悉正则表达式的人来说很难想到这种方式,或者说想到了不借助工具也很难写出来,当然还有不借助正则表达式的方法。
那我们可能就会想到从前往后遍历字符串,获取每一个单词,然后返回最后一个单词的长度,但其实不用,因为我们只需要用到最后一个单词,所以从后往前找到第一个单词,也就是字符串的最后一个单词,然后返回它的长度即可,不需要保存这个单词到底是什么。
代码(Python):
class Solution(object):
def lengthOfLastWord(self, s):
s = s.strip() #去掉首尾的空格
result = 0 #最后一个单词的长度
for i in range(len(s)-1,-1,-1): #从后往前遍历
if s[i] != ' ': #不是空格,那就是字符,单词长度+1
result += 1
else: #碰到第一个空格就退出循环
break
return result
标签:空格,58,一个,最后,单词,字符串,长度
From: https://blog.csdn.net/Jamaple/article/details/139857981