返回

每日一道算法题014:探究最后一个单词的长度

Android

题意解析:

每日一道算法题014:最后一个单词的长度

给定一个字符串 s,请你返回字符串 s 中最后一个单词的长度。如果字符串 s 中不存在最后一个单词,请你返回 0 。一个单词是指由字母组成、非空且没有前导空格或尾随空格的字符串。

解题思路:

要解决这道算法题,我们可以采用以下两种解题思路:

方法一:字符串分割

  1. 将字符串 s 使用空格进行分割,得到一个字符串数组 wordList。
  2. 获取 wordList 数组的最后一个元素,即最后一个单词。
  3. 计算并返回最后一个单词的长度。

方法二:直接计算

  1. 使用一个变量 length 来记录当前单词的长度。
  2. 遍历字符串 s,当遇到空格时,将 length 重置为 0。
  3. 当遍历到字符串的最后一个字符时,将 length 作为最后一个单词的长度并返回。

代码实现:

方法一:字符串分割

def length_of_last_word(s):
  """
  返回字符串 s 中最后一个单词的长度。

  Args:
    s (str): 输入的字符串。

  Returns:
    int: 最后一个单词的长度。
  """

  # 将字符串 s 使用空格进行分割。
  word_list = s.split()

  # 获取 wordList 数组的最后一个元素,即最后一个单词。
  last_word = word_list[-1]

  # 计算并返回最后一个单词的长度。
  return len(last_word)

方法二:直接计算

def length_of_last_word(s):
  """
  返回字符串 s 中最后一个单词的长度。

  Args:
    s (str): 输入的字符串。

  Returns:
    int: 最后一个单词的长度。
  """

  # 初始化 length 变量。
  length = 0

  # 遍历字符串 s。
  for char in s:
    # 当遇到空格时,将 length 重置为 0。
    if char == " ":
      length = 0
    # 当遇到字母时,将 length 加 1。
    elif char.isalpha():
      length += 1

  # 返回 length。
  return length

复杂度分析:

时间复杂度:

  • 方法一:字符串分割的时间复杂度为 O(n),其中 n 是字符串 s 的长度。
  • 方法二:直接计算的时间复杂度也为 O(n),因为需要遍历整个字符串 s。

空间复杂度:

  • 方法一:字符串分割的空间复杂度为 O(n),因为需要创建一个字符串数组 wordList。
  • 方法二:直接计算的空间复杂度为 O(1),因为只需要使用一个变量 length 来记录当前单词的长度。

结语:

在本文中,我们深入探究了每日一道算法题014:最后一个单词的长度。我们介绍了两种解题思路,并给出了相应的代码实现。最后,我们还对这两种解题思路的复杂度进行了分析。希望本文能够帮助您更好地理解字符串操作和单词长度计算的编程技巧。