14 最長公共字首

2021-09-26 22:34:23 字數 1041 閱讀 8509

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 " "。

示例 1:

輸入: [「flower」,「flow」,「flight」]

輸出: 「fl」

示例 2:

輸入: [「dog」,「racecar」,「car」]

輸出: 「」

解釋: 輸入不存在公共字首。

注:所有輸入只包含小寫字母 a -z

解題思路:

當字串陣列長度為0時則公共字首為空,直接返回;

令最長公共字首target的值為第乙個字串,進行初始化;

遍歷後面的字串,依次將其與target進行比較,兩兩找出公共字首,最終結果即為最長公共字首。這裡的方法是利用indexof()方法,如果target剛好出現在strs[i]字串的第乙個位置則返回0,如果不是則利用substring()方法剪下target串;

如果target的長度為0,則則沒有最長公共字首,返回「 」;

時間複雜度:o(s),s為所有字串的長度之和。

其它思路:

1, 上面的思路是兩兩比較,最後找出最長公共字首。我們也可以水平掃瞄,全部比較字元陣列中的每一位,先判斷每個串第一位是否相同,然後依次判斷後一位。一旦有乙個串和目標字串不同時就返回,結束遍歷;

2,當然也可以用分治法,分而治之。將陣列兩兩分組,然後找到各自的最長公共字首,然後再找第一批得到的字元陣列的最長公共字首(這裡也是和前面一樣分組)。當然分治法用起來**比較複雜,但對於大量資料會有很高的效率。

class

solution

string target = strs[0]

;for

(int i =

1; i< strs.length; i++)}

}return target;

}}

參考:

14 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母a z。思路 兩兩對比,產生最後的公共字串 cla...

14 最長公共字首

分析 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 輸入 flower flow flight 輸出 fl 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。當字串陣列為空或者字串陣列中有空串時,不存在公共字首 當字串陣列只有乙個元素時,公共字首就是...

14 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 思路一 先找到陣列中最短元素,最長公共子串不會超過最短元素 對第乙個元素迭代分割,分割後的子串用於迭代比較是否相同。class solution if str...