def long_common_prefix(input_list):
for i in range(1, len(input_list)):
input_list[0] = get_prefix(input_list[0], input_list[i])
return input_list[0]
def get_prefix(s1, s2):
p1 = p2 = 0
e1, e2 = len(s1), len(s2)
currLongest = ''
while p1 != e1 and p2 != e2:
if s1[p1] == s2[p2]:
currLongest += s1[p1]
p1 += 1
p2 += 1
else:
break
return currLongest
这是一个计算列表中字符串最长公共前缀的代码。例如,
['abcd','abc','ab']
会给我
'ab'
. 代码工作得很好,但我不确定如何定义代码的时间和空间复杂性。
在
long_common_prefix
,只有一个循环
O(N)
在循环中,它调用帮助器
get_prefix
. 自从
GETX前缀
将是
o(n)
它会在单回路中运行,是吗?
O(N^2)
其中n是字符串的长度?
谢谢。