字符串数组中获取最长的公共前缀

Write a function to find the longest common prefix string amongst an array of strings.

意思是: 写一个从字符串数组中获取最长公共前缀的函数.

编程之前我们要先了解到:

  1. 如果有相同的前缀,那么肯定首字母相同;
  2. 如果没有相同的前缀,那么不管如何都是返回为空字符串(“”)

因此我们可以先进行排序,然后通过第一个和最后一个的字符串进行比较,获取是否有公共字符串

源代码

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct LongestCommonPrefix {
static func Solution(sArrs: [String]) -> String {
//判读数组
if sArrs.isEmpty {
return ""
}
if sArrs.count == 1 {
return sArrs.first!
}
let strArrs = sArrs.sorted()
let firstStr = strArrs.first!
let endStr = strArrs.last!
var i = 0
let length = min(firstStr.characters.count, endStr.characters.count)
while i < length && firstStr[(firstStr.index(firstStr.startIndex, offsetBy: i))] == endStr[endStr.index(endStr.startIndex, offsetBy: i)]
{
i+=1
}
return firstStr.substring(to: firstStr.index(firstStr.startIndex, offsetBy: i))
}
}