思路:編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 「」。
輸入:
["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中好用下面讓我們先來看看題把 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 ...