/*
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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Write a function to find the longest common prefix string...
- Write a function to find the longest common prefix string...
- 验证第一个字符串从0到leng-1的字符是不是其他字符串都有,string有startswit()方法(是否以某个...
- Write a function to find the longest common prefix string...
- 题目 Write a function to find the longest common prefix str...