leetcode14 最長公共字首(C )

2021-09-28 17:37:17 字數 1063 閱讀 3113

編寫乙個函式來查詢字串陣列中的最長公共字首。

如果不存在公共字首,返回空字串 「」。

示例 1:

輸入: [「flower」,「flow」,「flight」]

輸出: 「fl」

示例 2:

輸入: [「dog」,「racecar」,「car」]

輸出: 「」

解釋: 輸入不存在公共字首。

說明:所有輸入只包含小寫字母 a-z 。

解法一:暴力法

暴力法的思路很簡單,令第乙個字串為公共字首(ans),後面的字串與ans依次比較,得出公共字首。這種方法無論字首多短,都要遍歷到最後乙個字串(例如 [「dog」,「door」,「car」] ,ans=」dog「,

」car「與ans沒有公共字首,但 」 car「 之前的字串仍要與ans比對),做了很多無用功。

解法二:縱向比較

縱向比較的思想是先比對每個字串的第 i 個字元,如果相同就繼續比對,如果不同就返回結果。

如下,每個字串第乙個字元分別為 d,d,c,三個字元不全相同,所以直接返回結果。減去了多餘的遍歷。

d o o r

d o g

c a r

public

string

longestcommonprefix

(string

strs)

}return com;

}

需要注意的點:

結束迴圈的條件有兩個:

1.當遍歷到兩個字串中較短的字串的末尾時,要結束迴圈,不然會超出索引範圍;

2.當字元不同時,結束迴圈。

一開始我打算用stringbuilder來儲存結果,但是有點弄巧成拙的感覺,因為stringbuilder需要判斷到乙個相同的字元時進行新增,而新增的條件是當遍歷完全部字串的某位字元且他們都相同。然後參考了別的解答,直接在跳出迴圈時擷取目前遍歷到的字串就可得到答案,比stringbuilder方案簡潔的多。看來還是需要多訓練思維。

參考:

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...