力扣解題思路 14 最長公共字首 糾錯記錄

2021-10-09 22:05:00 字數 1431 閱讀 9442

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

輸入:

["flower"

,"flow"

,"flight"

]輸出:

"fl"

我首先想到的就是先取第乙個字串作為基準,然後再建立乙個整數陣列(長度和第乙個字串一樣長),然後用其他幾個字串和他相比較(相同的字元則在對應位置加1),後來一想發現不僅太麻煩,而且邏輯不嚴密。->

實際上我們並不需要乙個額外的陣列,直接將其他的字串和第乙個字串相比較接可以了,怎麼比較呢?不斷地判斷第二個字串的字首是不是第乙個字串的字首,但是為了找到最大的字首,我們應該從第二個字串的最長長度開始比較(不符合再不斷地縮小長度直到滿足)

->

那我們如何判斷該字首是否存在呢?indexof()這個方法派上了用場,只要該結果返回0,證明該字串就是字首(因為從0開始匹配了)。

完整**如下:

public string longestcommonprefix

(string[

] strs)

return prefix;

}

還有就是使用字首樹,用count記錄經過此路徑的單詞數量:

class

solution

tire.

insert

(str);}

return tire.

searchmaxprefix

(strs[0]

,strs.length);}

class

tire

}/** 字首樹的根節點 */

tirenode root;

public

tire()

/** * 插入每乙個單詞進入字首樹

* @param str

*/public

void

insert

(string str)

cur = cur.child[str.

charat

(i)-

'a']

; cur.count++;}

cur.flag =

true;}

/** * 查詢最長公共字首

* @return

*/public string searchmaxprefix

(string s,

int len)

else

}return sb.

tostring()

;}}}

不知道為啥,寫的時候老是忘記cur = cur.child[s.charat(i) - 『a』];這句,下不為例!!

力扣14 最長公共字首。

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。1 思路 2 標籤 鍊錶 3 當字串陣列長度為 0 時則公共字首為空,直接返回...

力扣14 最長公共字首

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。這道題挺簡單的 但是邊界一直沒找準 所以改了又改錯了幾次 雙指標 j指標為字串...

最長公共字首(力扣)

2020.10.13繼續堅持每天一道演算法題,從簡單到難題,一步乙個腳印,腳踏實地,希望每天都如此,今天的題目是最長公共字首,開始沒有懂,自己有查了一遍zip 函式,這個函式在python中好用下面讓我們先來看看題把 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 ...