Python求一批字符串的最長公共前綴算法示例
本文實(shí)例講述了Python求一批字符串的最長公共前綴算法。分享給大家供大家參考,具體如下:
思路一:這個(gè)題一拿到手,第一反應(yīng)就是以第一個(gè)字符串strs[0]為標(biāo)準(zhǔn),如果其他字符串的第一個(gè)字符和str[0]的第一個(gè)字符串相同,則再比較第二個(gè)字符串,以此類推直到出現(xiàn)不同為止。
def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ if not strs: return "" first_str = strs[0] other_strs = strs[1:] prefix = "" for i in first_str: prefix += i for s in other_strs: if not s.startswith(prefix): return prefix[:-1] return prefix
思路二:第二種方法,就是先比較前兩個(gè)字符串,求出他們的最長公共前綴,再用這個(gè)前綴去跟第三個(gè)字符串比較求出新的公共前綴,以此類推
class Solution(object): def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ if not strs: return "" if len(strs) == 1: return strs[0] prefix = strs[0] for i in range(len(strs)-1): if not prefix: return "" prefix = self.getCommonPrefix(prefix,strs[i+1]) return prefix #先定義一個(gè)函數(shù)求出兩個(gè)字符串的最長公共前綴 def getCommonPrefix(self,str1,str2): if not str1 or not str2: return "" prefix = "" for s in str1: prefix += s if not str2.startswith(prefix): return prefix[:-1] return prefix
不過測試了一下,第一種方法還要快一點(diǎn)。
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python Airtest自動(dòng)化測試工具的的使用
本文主要介紹了python Airtest自動(dòng)化測試工具的的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02python中關(guān)于py文件之間相互import的問題及解決方法
這篇文章主要介紹了python中關(guān)于py文件之間相互import的問題,本文用一個(gè)例子演示下如何解決python中循環(huán)引用的問題,需要的朋友可以參考下2022-02-02