leetcode14最長公共字首多解法

2022-01-11 09:29:04 字數 1372 閱讀 9690

題目鏈結

解法一:按列比較,選第乙個字元為比較物件,若長度達到所有字串中最短的字元長度,或者有不符合的出現,返回結果。時間擊敗了7.28%的人。

class solution 

s += c;

}return s;

}}

解法二:分治演算法,將字串陣列分兩半來算,然後再比較兩個兩半得到的結果,擊敗了99%。

class solution 

private string dfs(string strs, int begin, int end)

int mid = (begin + end) >> 1;

string a = dfs(strs, begin, mid);

string b = dfs(strs, mid + 1, end);

int length = math.min(a.length(), b.length());

int index = 0;

while (index < length && a.charat(index) == b.charat(index))

return a.substring(0, index);

}}

class solution 

return strs[0].substring(0, index);

}}

解法四:使用字典樹(trim)演算法,這個模板還是很有用的,需要根據題目需求在最基礎的模板做一些修改,在細節處debug找了很久,最後擊敗了85%。

class solution 

public void insert(string s)

tmp = tmp.cnt[num];

tmp.flag++;}}

public int find(string s, int n)

return s.length();}}

public string longestcommonprefix(string strs)

root.flag = strs.length;

int len = root.find(strs[0], strs.length);

return strs[0].substring(0, len);

}}

雖然是一道簡單題目,前面兩種演算法很快就想出了,但是後面複習了分治演算法和字典樹演算法,其中分治很快自己寫出來了,字典樹是忘記了又去看了一遍自己寫的,一下午就過了,還算有點收穫。

LeetCode14最長公共字首

編寫乙個函式來查詢字串陣列中最長的公共字首字串。例如 輸出 ab 比較乙個字串陣列的最長公共字首,遍歷整個字串陣列,建立乙個字串用來儲存當前最長公共字串,逐個比較,不斷更新公共字串內容。情況比較多,考慮周全,不然可能會陣列溢位。公共字串的長度和當前比較字串的長度大小的比較,避免陣列越界,還有空字串的...

LeetCode 14 最長公共字首

編寫乙個函式來查詢字串陣列中最長的公共字首字串。用第乙個字串s,比較strs的每個字串的公共字首,並記錄字首有m位,之後輸出s的前m位字元即可。但是在輸出過程中,使用了如下的賦值方式 for int i 0 i m i ans i s i 在string型別中,內部的成員是private的,所以不能...

LeetCode14 最長公共字首

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