編寫乙個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 「」。
示例 1:
輸入: [「flower」,「flow」,「flight」]
輸出: 「fl」
示例 2:
輸入: [「dog」,「racecar」,「car」]
輸出: 「」
解釋: 輸入不存在公共字首。
說明:
所有輸入只包含小寫字母 a-z 。
方法一:橫向掃瞄法
前兩個字串找公共子串,將其結果和第三個字串找公共子串……直到最後乙個串。
public static string longestcommonprefix(string strs)
if(strs.length == 1)
string commonprefix = strs[0];
int commonprefixlen;
for(int i=1; i複雜度分析:
方法二:橫向掃瞄+二分查詢法
跟方法一相同,前兩個字串找公共子串,將其結果和第三個字串找公共子串……直到最後乙個串。但是在每兩個字串找公共子串時,用二分法。
public static string longestcommonprefix2(string strs)
if(strs.length == 1)
int high = strs[0].length();
int low = 0;
int middle;
for(int i=1; i複雜度分析:
方法三:縱向掃瞄法
從下標0開始,判斷每乙個字串的下標0,判斷是否全部相同。直到遇到不全部相同的下標。
**(略)
複雜度分析:
方法四:trie字典樹
字典樹又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。
它的優點是:利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。
}複雜度分析:
演算法題 最長公共字首
上禮拜五,同事給我拋了個問題,獲取最長的公眾字首。當時手上有幾個bug,大概看了看,想了想思路,不過沒有時間實現。禮拜天抽空就寫了一下,題目還是挺不錯的,記錄一下。q 最長公共字首 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,則返回 null 所有輸入只包含小寫字母 a z 例 ...
演算法題 最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z related topics 字串 14...
演算法 最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 輸入 flower flow flight 輸出 fl 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。class solution 對result擷取公共部分 result result.substr...