LeetCode之最長公共前綴
前言
我們社區陸續會將顧毅(Netflix 增長黑客,《iOS 面試之道》作者,ACE 職業健身教練。微博:@故胤道長[1])的 Swift 算法題題解整理為文字版以方便大家學習與閱讀。
LeetCode 算法到目前我們已經更新了 13 期,我們會保持更新時間和進度(周一、周三、周五早上 9:00 發布),每期的內容不多,我們希望大家可以在上班路上閱讀,長久積累會有很大提升。
不積跬步,無以至千里;不積小流,無以成江海,Swift社區 伴你前行。
難度水平:簡單
1. 描述
編寫一個函數來查找字符串數組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 ""。
2. 示例
示例 1
- 輸入:strs = ["flower","flow","flight"]
- 輸出:"fl"
示例 2
- 輸入:strs = ["dog","racecar","car"]
- 輸出:""
- 解釋:輸入不存在公共前綴。
約束條件:
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 僅由小寫英文字母組成
3. 答案
- class LongestCommonPrefix {
- func longestCommonPrefix(_ strs: [String]) -> String {
- guard let firstStr = strs.first else {
- return ""
- }
- var res = ""
- for (i, char) in firstStr.enumerated() {
- // dropFirst(_ k: Int = 1) returns a Substring struct
- for str in strs.dropFirst() {
- if i == str.count {
- return res
- }
- // Another easy way: Array(str)[i], time complexity is linear though
- let currentStrChar = str[str.index(str.startIndex, offsetBy: i)]
- if char != currentStrChar {
- return res
- }
- }
- res.append(char)
- }
- return res
- }
- }
- 主要思想:首先使用第一個字符串作為結果,在迭代數組時修改
- 時間復雜度: O(nm)
- 空間復雜度: O(m)
m 為最長前綴長度
該算法題解的倉庫:LeetCode-Swift[2]
點擊前往 LeetCode[3] 練習
參考資料
[1]@故胤道長:
https://m.weibo.cn/u/1827884772
[2]LeetCode-Swift:
https://github.com/soapyigu/LeetCode-Swift
[3]LeetCode:
https://leetcode.com/problems/longest-common-prefix/