题目分析

  1. 题目给出我们一个字符串,其中包含空格字符,含义大多是一句话
  2. 我们要返回这一句话最后一个单词的长度,即以空格为分界的最后一个子字符串的长度

本题我们使用python语言来解决

方法一:使用split()直接返回长度

  • 调用分割方法
    • 我们可以直接调用split()函数分割含有空格的字符串

    • 得到的列表最后一个元素即子字符串

    • 最终返回其长度即可


import sys

### 读取输入数据部分 ###
for line in sys.stdin:
    a = line.split()
### 读取输入数据部分 ###

print(len(a[-1]))		# 打印分割后最后一个子字符串的长度即可

复杂度分析

  • 时间复杂度:O(n)O(n),只要打印出最后的长度即可,但是调用split()函数复杂度为O(n)O(n)
  • 空间复杂度:O(1)O(1),未引入额外的空间

方法二:逐位遍历找空格

  • 遍历
    • 我们从后往前进行遍历

    • 标记找到第一个空格字符就停止循环

    • 最终通过索引差来获得结果

alt

import sys

### 读取输入数据部分 ###
s = ""
for line in sys.stdin:
    s = line
### 读取输入数据部分 ###

pos = -1									# 标记一个待寻找的空白字符位置
for i in range(len(s) -1, -1, -1):			# 对输入字符串进行倒序遍历
    if s[i] == ' ':							# 如果遇到空格则标记空格位置,并退出循环
        pos = i
        break
print(len(s) - pos - 2)						# 打印最终的最后一个字符串的长度
    

复杂度分析

  • 时间复杂度:O(n)O(n),遍历的时间代价为O(n)O(n)
  • 空间复杂度:O(1)O(1),未引入额外的空间占用