对于给定的字符串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
是字符数。
这是正确的吗?哪种算法所需的时间复杂度更低(哪种算法运行更快)?
答案 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
因此,第一个函数出现更快