日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

14. Longest Common Prefix

發布時間:2024/5/7 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 14. Longest Common Prefix 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Title

編寫一個函數來查找字符串數組中的最長公共前綴。

如果不存在公共前綴,返回空字符串 “”。

Solve

1.橫向掃描

用LCP(S1 …Sn)表示字符串S1 …Sn的最長公共前綴,可以得到以下結論:LCP(S1…Sn)=LCP(LCP(LCP(S1,S2),S3),…Sn)LCP(S_1…S_n)=LCP(LCP(LCP(S_1,S_2),S_3),…S_n)LCP(S1?Sn?)=LCP(LCP(LCP(S1?,S2?),S3?),Sn?)

依次遍歷字符串數組中的每個字符串,對于每個遍歷到的字符串,更新最長公共前綴,當遍歷完所有的字符串以后,即可得到字符串數組中的最長公共前綴。

優化: 如果在尚未遍歷完所有的字符串時,最長公共前綴已經是空串,則最長公共前綴一定是空串,因此不需要繼續遍歷剩下的字符串,直接返回空串即可。

Code

def longestCommonPrefix_transverseScan(self, strs: List[str]) -> str:def lcp(str1, str2):index, length = 0, min(len(str1), len(str2))while index < length and str1[index] == str2[index]:index += 1return str1[: index]if not strs:return ""prefix = strs[0]for i in range(1, len(strs)):prefix = lcp(prefix, strs[i])if not prefix:breakreturn prefix

時間復雜度

  • 時間復雜度: O(mn),其中m是字符串數組中的字符串的平均長度,n是字符串的數量,最壞情況下,字符串數組中的每個字符串的每個字符都會被比較一次。
  • 空間復雜度: O(1),使用額外空間復雜度為常數。

2.縱向掃描

縱向掃描時,從前往后遍歷所有字符串的每一列,比較相同列上的字符是否相同,如果相同則繼續對下一列進行比較,如果不相同則當前列不再屬于公共前綴,當前列之前的部分為最長公共前綴。

↓↓ flower↓↓ flow↓↓ flight

Code

def longestCommonPrefix_longitudinalScan(self, strs: List[str]) -> str:if not strs:return ""for i in range(len(strs[0])):char = strs[0][i]for j in range(1, len(strs)):if i == len(strs[j]) or strs[j][i] != char:return strs[0][:i]return strs[0]

時間復雜度

  • 時間復雜度: O(mn),其中m是字符串數組中的字符串的平均長度,n是字符串的數量,最壞情況下,字符串數組中的每個字符串的每個字符都會被比較一次。
  • 空間復雜度: O(1),使用額外空間復雜度為常數。

3.分治法

LCP 的計算滿足結合律,可以有以下推導:LCP(S1…Sn)=LCP(LCP(S1,…Sk),LCP(Sk+1,…Sn))LCP(S_1…S_n)=LCP(LCP(S_1,…S_k),LCP(S_{k+1},…S_n))LCP(S1?Sn?)=LCP(LCP(S1?,Sk?),LCP(Sk+1?,Sn?))

基于上述推導,可以使用分治法得到字符串數組中的最長公共前綴。

對于問題 LCP(Si ?Sj),可以分解成兩個子問題 LCP(Si…Smid) 與 LCP(Smid+1?…Sj),其中 mid= (i+j)/2,對兩個子問題分別求解,然后對兩個子問題的解計算最長公共前綴,即為原問題的解。

Code

def longestCommonPrefix_divideAndConquer(self, strs: List[str]) -> str:def lcp(left, right):if left == right:return strs[left]middle = (left + right) // 2leftLcp, rightLcp = lcp(left, middle), lcp(middle + 1, right)minLength = min(len(leftLcp), len(rightLcp))for i in range(minLength):if leftLcp[i] != rightLcp[i]:return leftLcp[:i]return leftLcp[: minLength]return "" if not strs else lcp(0, len(strs) - 1)

時間復雜度

  • 時間復雜度: O(mn),其中m是字符串數組中的字符串的平均長度,n是字符串的數量。時間復雜度的遞推式是T(n)=2T(n/2)+O(m),通過計算可得 T(n)=O(mn)。
  • 空間復雜度: O(mlogn),其中 m 是字符串數組中的字符串的平均長度,n 是字符串的數量。空間復雜度主要取決于遞歸調用的層數,層數最大為 logn,每層需要 m 的空間存儲返回結果。

4.Python內置函數

zip() 函數用于將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。

如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。

def longestCommonPrefix_python(self, strs: List[str]) -> str:for index, value in enumerate((*(len(set(item)) for item in zip(*strs)), 2)):if value > 1:return (*strs, "")[0][: index]

總結

以上是生活随笔為你收集整理的14. Longest Common Prefix的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 999一区二区三区 | 日本在线资源 | 国产乱码精品一区二区三 | 亚洲黄色大片 | 国产精品五区 | 久久久久免费视频 | 一区二区三区麻豆 | 一品毛片 | 亚洲九九在线 | 国产综合久久久久久鬼色 | 亚洲毛片精品 | 亚洲天堂福利视频 | 高清欧美精品xxxxx在线看 | 成人免费一级片 | 一本色道久久加勒比精品 | 外国黄色网址 | 真实的中国女人做爰 | 成人午夜激情影院 | 少妇一边呻吟一边说使劲视频 | 日韩午夜剧场 | 成av人在线 | 肉大捧一进一出免费视频 | 国产夫妻性生活视频 | 91视频进入| 91精品国产成人www | 精品人妻一区二区免费视频 | 免费看a级黄色片 | 高h校园不许穿内裤h调教 | www黄色av | 欧美人与动物xxx | 九九三级 | 波多野结衣办公室33分钟 | 四虎一区二区三区 | 欧美在线一区视频 | 国产成人高清视频 | 男人与雌性宠物交啪啪 | 国产精品国产精品国产专区 | 色综合久久天天综合网 | av免费在线观看不卡 | 午夜av网 | 久久av无码精品人妻系列试探 | 国产免费又粗又猛又爽 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 饥渴丰满的少妇喷潮 | 黄色一级片在线 | 色欲av伊人久久大香线蕉影院 | 五月婷婷导航 | 日韩三级在线观看 | 亚洲第一区在线观看 | 国产一级在线 | 色播导航 | 人人看人人爽 | 国产欧美又粗又猛又爽 | 国语对白做受欧美 | 91在线视频免费看 | www.人人干| 91精品国产91久久久久久黑人 | 国产精品第56页 | www亚洲成人| 日韩精品网站 | 777奇米色 | 97视频在线观看免费 | 狠狠精品干练久久久无码中文字幕 | 免费看色 | 国产区一区二 | 成人片免费视频 | 国产乱国产乱300精品 | 日韩一级av毛片 | 午夜极品| 麻豆成人久久精品一区二区三区 | 不卡av免费观看 | 毛片视频免费观看 | 性xxx18| 欧美一级黄色片在线观看 | 一级淫片在线观看 | 久久亚洲AV无码精品 | 国产高清无密码一区二区三区 | 高清在线一区 | av精选 | 极品探花在线播放 | 欧美日一区二区 | www.在线观看av | 丁香六月av | 国产 日韩 欧美 精品 | 久久久久久久久久久av | 日韩美女视频一区二区 | 久久久欧洲 | 好色av| 精品国产一区二区三区久久久 | 国产性猛交xxxⅹ交酡全过程 | 99精品欧美一区二区三区 | 黄色av免费网站 | 野花视频在线观看免费 | 2019国产精品| 国产资源精品 | 粗了大了 整进去好爽视频 日本女优中文字幕 | 久草免费在线 | 成人av免费在线播放 | 超碰免费在 |