今天去远景能源面试,考官让我写一个计算两个字符串最大共有字符串的算法,当时写的有点low,使用了Java的contains方法,不断从找寻第二个字符串的子串进行配对,考官勉强给我通过,后面回来自己重写了一下,避免了contains函数,如下
#!/usr/bin/python
def getLongest(str_a,str_b):
longest = 0
ret = ""
for i in range(0,len(str_a)):
for j in range(0,len(str_b)):
if(str_a[i]==str_b[j]):
ast = i+1
bst = j+1
count=1
while(ast<len(str_a) and bst < len(str_b) and str_a[ast]==str_b[bst]):
ast = ast+1
bst = bst+1
count = count+1
if(count > longest):
longest = count
ret = str_a[i:i+count]
return ret
print getLongest("xscmdshit","saojojvocmdsjiso")
输出结果为
cmds
时间复杂度为O(N2),虽然效率不高,但是总算是写了出来,记录一下!