匹配兩個字符串的最大子串

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章