这段用于反转字符串单词的代码的时间复杂度是多少?
What is the time complexity of this code for reversing words of a string?
input_string= "This is a string"
output=''
words=input_string.split(" ")
print(words)
for word in words:
ts=''
for l in range(len(word)-1,-1,-1):
ts+=word[l]
output+=ts + ' '
print(output)
我认为复杂度为 o(n^2),但我也对 o(nm) 的复杂度感到困惑,因为对于每个单词,我然后遍历它的字母,这些字母本质上是长度为 m
的子串
如何确定正确的复杂度?
尝试检测流程中的循环(隐式和显式)及其相对基数。
input_string.split(' ')
遍历字符一次,所以 O(n)
for l in range(len(word)...
嵌套在for word in words
中,每个字符只处理一次,所以也是O(n)
output+=ts + ' '
每个单词执行一次,但嵌套循环不包含空格,因此嵌套循环的操作总数仍将小于或等于 n
简而言之,复杂度为O(n)。
但是,如有疑问,请计时!您可以尝试各种字符串长度并(使用 timeit)确定进展是否确实是线性的(即时间与字符串长度成比例)
input_string= "This is a string"
output=''
words=input_string.split(" ")
print(words)
for word in words:
ts=''
for l in range(len(word)-1,-1,-1):
ts+=word[l]
output+=ts + ' '
print(output)
我认为复杂度为 o(n^2),但我也对 o(nm) 的复杂度感到困惑,因为对于每个单词,我然后遍历它的字母,这些字母本质上是长度为 m
的子串如何确定正确的复杂度?
尝试检测流程中的循环(隐式和显式)及其相对基数。
input_string.split(' ')
遍历字符一次,所以 O(n)for l in range(len(word)...
嵌套在for word in words
中,每个字符只处理一次,所以也是O(n)output+=ts + ' '
每个单词执行一次,但嵌套循环不包含空格,因此嵌套循环的操作总数仍将小于或等于 n
简而言之,复杂度为O(n)。
但是,如有疑问,请计时!您可以尝试各种字符串长度并(使用 timeit)确定进展是否确实是线性的(即时间与字符串长度成比例)