美文网首页LeetCode
14. Longest Common Prefix

14. Longest Common Prefix

作者: 小万叔叔 | 来源:发表于2017-02-18 10:25 被阅读6次
/*
Write a function to find the longest common prefix string amongst an array of strings.
思想:拿第一个 str 作为标准,后面的字符串依次做比对。
复杂度:时间复杂度 O(nm), 空间复杂度 O(m), m 是第一个字符串的长度。
这题的关键在于,不断缩减比对的长度,例如下一个比对的长度小于当前,则最小长度就变成了下一个的长度,
如果同下一个比对的过程中出现不匹配,则最小长度又变成了不匹配长度位置的上一位。
*/

import Foundation

func longestCommonPrefix(_ strs: [String]) -> String {
    guard strs.count > 0 else {
        return ""
    }

    var compareArray = [Character](strs[0].characters)

    for s in strs {
        let currentArray = [Character](s.characters)

        //因为始终共有长度是最小长度,所以每次都用最小长度去作为下一次比较的基础
        if compareArray.count > currentArray.count {
            compareArray = Array(compareArray[0 ..< currentArray.count])
        }

        for i in 0..<compareArray.count {
            if currentArray[i] != compareArray[i] {
                compareArray = Array(compareArray[0 ..< i])
                break
            }
        }
    }
    return  String(compareArray)

}

print(longestCommonPrefix(["abc", "ab", "ab", "abc"]))

相关文章

网友评论

    本文标题:14. Longest Common Prefix

    本文链接:https://www.haomeiwen.com/subject/bfprwttx.html