編寫乙個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 「」。
示例 1:
輸入:strs = [「flower」,「flow」,「flight」]
輸出:「fl」
示例 2:
輸入:strs = [「dog」,「racecar」,「car」]
輸出:""
解釋:輸入不存在公共字首。
0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 僅由小寫英文本母組成
按照正常的思維邏輯就是乙個字元乙個字元的比較,話不多說直接上**。
string longestcommonprefix(vector& strs)
char c;
int n = strs[0].size();
for(int i=1;i提交**之後,發現擊敗的非常多,就有點飄飄然,然後一看題解,直接崩潰,發現這道題雖然是一道簡單題,而且暴力法很適合這道題,但其他的題解的思路真的非常巧妙。
這個解法是我感觸最深的。
如果我們把字串組按照字典序進行排序,那麼如果字串組的首尾兩個字串最長公共字首就是整個字串組的公共字首。
上**。
class solution
};
這種解法的主要時間消耗在排序上,如果是比較有序或者就是有序,速度會更快,而且提供給我們乙個比較多個陣列相同的全新方法,先按照類似於字典序排序的方法排序再比較。
而且提交之後直接雙百擊敗,大神思路,膜拜!!!
主要是排序再比較的方法實在太秀,不光解決了這道題,而且提供了需要比較多個值時的乙個減少比較的方法。最好是有序的時候會更好。至於官網的其他解法,如分治二分什麼的,感覺不像是這些解法的主場,遇到非常適合的再好好總結。
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...