哪种算法可以更快地计算字符串中最后一个单词中的字符数

时间:2019-01-30 04:02:56

标签: python python-3.x

对于给定的字符串s,我想计算计算最后一个单词中的字符数所花费的时间复杂度。

第一个代码:

count = 0
flag = 0
for i in s[::-1]:
  if (i == ' '):
     if (flag):
       break
  else:
    count += 1
    flag = 1

第二代码: //假设至少有2个单词

def countLast(sen):
  count = 0
  i = -1
  while abs(i) <= len(sen):
    if sen[i] == " ":
      i -= 1
      continue
    else:
      while sen[i] != " ":
        count += 1
        i -= 1
      return count

第一个代码将在O(n) + O(w)中运行,其中n是字符串中的单词数,因为我在for循环中使用[::-1],而w是最后一个字的字符数。

我的观点是第二个代码段将在O(w)中运行,其中w是字符数。

这是正确的吗?哪种算法所需的时间复杂度更低(哪种算法运行更快)?

1 个答案:

答案 0 :(得分:0)

我首先为您的第一个代码创建了一个函数,如下所示:

methods: {
  getFullName (student) {
    return student.firstname + ' ' + student.middlename + ' ' + student.lastname;
  }
}

然后,在iPython中,我只使用了函数def first(s): count = 0 flag = 0 x = 0 for i in s[::-1]: if (i == ' '): if (flag): break else: x += 1 flag = 1 ,这是结果

%timeit

因此,第一个函数出现更快