2019 03 5 演算法 進化(最長公共字首)

2021-09-11 22:48:46 字數 1153 閱讀 3749

題目描述

編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 「」。

示例 1:

輸入: ["flower","flow","flight"]

輸出: "fl"

示例 2:

輸入: ["dog","racecar","car"]

輸出: ""

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

說明:

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

我的初版解決思路為遍歷陣列,挨個字元進行比較,直到結束。**如下:

//迴圈遍歷,有兩種退出條件: 1,陣列最短元素  2,陣列內string相同位置字元不同

public string longestcommonprefix(string strs)

stringbuilder sb = new stringbuilder();

boolean toend = false;

for(int i=0;;i++)

for(string arr:strs)

toend =true;

break;

}if(sb.length()<=i) else if(sb.charat(i) != arr.charat(i))

}}

return sb.tostring();

}

採用水平掃瞄法進行優化

舉例:

最終優化**如下:

public string longestcommonprefix(string strs) 

string prefix = strs[0];

for(int i=0;i**簡潔清晰了很多。

持續精進,加油!

演算法 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 輸入 flower flow flight 輸出 fl 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。class solution 對result擷取公共部分 result result.substr...

演算法 最長公共字首

題目描述 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 解題 使用分治法求解,找出左側...

演算法 最長公共子串行

好久沒做演算法題了,現在發現自己的演算法能力非常薄弱,所以特意練練,順便做個筆記方便以後檢視。今天整理一下最長公共子串行,最長公共子串行的問題常用於解決字串的相似度,是乙個非常實用的演算法,作為碼農,此演算法是我們的必備基本功。最長公共子串行,是指兩個字串可具有的長度最大的公共的子串行。聽著好像有點...