本文首發於微信公衆號:"算法與編程之美",歡迎關注,及時瞭解更多此係列文章。
問題描述
編寫一個函數來查找字符串數組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 ""。
示例 1:
輸入:["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入:["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
解決方案
很容易想到的是我們將第一個字符串A和第二個字符串B求公共前綴,然後在和第三個字符串C求公共前綴,最終得到最長公共前綴。解題重點是求兩個字符串求公共前綴。比較常見的想法是如果這兩個字符串的第一個字符相同則記錄第一個字符,第二個相同則增加第二個,直到出現不同的字符串。但是在這個思路上有一個難點,我們在和C串求前綴的時候,會重新從第一個字符開始記錄,增加不必要的計算。第二個思路就是將A串作爲前綴,如果與B串前面字符不同,則去掉最後一個字符重新和B串匹配,直到字符完全匹配B串,在python中,s=s[:-1]很容易去掉最後一個字符。
代碼如下:
在代碼中要用到find函數,Pythonfind()方法檢測字符串中是否包含子字符串str如果指定開始和結束範圍,則檢查是否包含在指定範圍內。
結語
這個問題用到了字符串的檢測,通過列表中元素一一比對,查找相同的前綴,如果與B串前面字符不同,則去掉最後一個字符重新和B串匹配,直到字符完全匹配B串。
主編:王楠嵐
稿件來源:深度學習與文旅應用實驗室(DLETA)
本文分享自微信公衆號 - 算法與編程之美(algo_coding)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。