首先來看題目要求;
他是讓我們尋找列表所有字串的公共字首,從例題中可以看出有的公共字首不只乙個,那麼我們很容易想到利用for迴圈來進行。
如下解答:
首先判斷列表是否為空,之後再在第乙個字串中迴圈,查詢他的每一項是否有後面的相同,第二個迴圈就是判斷是否相同位置下的字母相同,最後返回相同的項。
當然這個方法用了兩層迴圈也會變得麻煩,然我們來看下乙個方法:
這乙個非常巧妙地用到了max,min對字串的判斷,他們會判斷出列表中字串的第乙個字母的最大最小值(a - z),相同的話就會繼續向下進行比較知道分出大小或者長短。這樣就可以不用判斷中間的字串的字首是否相同。減少了**量。
當然,如果了解了函式*zip的用法後,這道題將會更簡單,zip會把東西壓縮,原來是
[「flower」,「flow」,「flight」]
後來*號還原後變成了(a[0], b[0], c[0], d[0], e[0], f[0]) == (『f』, 『l』, 『o』, 『w』, 『e』, 『r』)
(a[1], b[1], c[1], d[1]) == (『f』, 『l』, 『o』, 『w』)
(a[2], b[2], c[2], d[2], e[2], f[2]) == (『f』, 『l』, 『i』, 『g』, 『h』, 『t』)
然後再經過壓縮變成了
a = [『f』, 『f』, 『f』]
b = [『l』, 『l』, 『l』]
c = [『o』, 『o』, 『i』]
d = [『w』, 『w』, 『g』]
最後再變成集合,算集合的長度在返回即可。
力扣LeetCode 14 最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 1 這一題直接平行掃瞄不一定會慢 實現簡...
力扣 LeetCode 14 最長公共字首
編寫乙個函式來查詢字串陣列中的最長公共字首。如果不存在公共字首,返回空字串 示例 1 輸入 flower flow flight 輸出 fl 示例 2 輸入 dog racecar car 輸出 解釋 輸入不存在公共字首。說明 所有輸入只包含小寫字母 a z 所有字串的字首最長的 簡單的列舉 兩重迴...
力扣題最長回文
public string longestpalindrome string s if i 2 如果規模是2 的話 else else else else return result 將整個字串分成不同規模大小的子串,規模從1 字串的長度 分別計算子串是否為回文串 這裡我唯一優化的就是在判斷乙個子串...