今天去遠景能源面試,考官讓我寫一個計算兩個字符串最大共有字符串的算法,當時寫的有點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),雖然效率不高,但是總算是寫了出來,記錄一下!