演算法百題之四十四 最長公共字首

2021-10-11 13:29:05 字數 1059 閱讀 6915

很高興又能和大家見面了,接下來準備系列更新的是演算法題,一日一練,早日公升仙!

今天的問題是:最長公共字首

思路:這道題考點是字串的擷取,比較簡單。關鍵在於如何提高效率以及注意邊界問題

string longestcommonprefix(vector& strs) 

string curstr = strs[0].substr(0, j);

for (int i = 1; i < strs.size(); i++)

if (strs[i].substr(0, j) != curstr)

} res = curstr;

} return res;

}

以上是我所寫的**,首先對res字串進行初始化,避免傳入的值是空字串或者是單字串。然後把strs作為目標字串,預設其為最長公共字串,然後對strs開始逐一遞增,然後遍歷其餘的字串,若擷取其餘字串的長度小於目標字串則證明已經到頭了。若擷取其餘字串與目標字串不相同也直接返回。若迴圈結束的時候還沒有中斷則證明strs就是最長字串。測試結果:雖然提交也通過了,但是感覺這種暴力法寫得不是很優雅,於是看了題解,找到了一位大神的4行**答案。

string longestcommonprefix(vector& strs)
其實現邏輯與我大致相同,都是把strs作為目標字串,只不過我是符合條件時把strs慢慢增長,其是不符合條件時把strs慢慢縮減。但是他有乙個巧妙之處是使用了find函式,string。find(str)會返回這個字串出現的初始位置,若不等於0則證明不是從頭開始的不符合條件。**寫得如此簡潔還是很敬佩的。

演算法題 最長公共字首

上禮拜五,同事給我拋了個問題,獲取最長的公眾字首。當時手上有幾個bug,大概看了看,想了想思路,不過沒有時間實現。禮拜天抽空就寫了一下,題目還是挺不錯的,記錄一下。q 最長公共字首 編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,則返回 null 所有輸入只包含小寫字母 a z 例 ...

演算法題 最長公共字首

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

演算法題 最長公共字首 LeetCode

編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 方法一 橫向掃瞄法 前兩個字串找公共子串...