Algorithm
Leet Code Easy
[Swift] Longest Common Prefix
[Swift] Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string “”.
Example
Input: strs = ["flower","flow","flight"]
Output: "fl"
Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] consists of only lower-case English letters.
문제 이해
코드
func longestCommonPrefix(_ strs: [String]) -> String {
if strs.isEmpty {
return ""
}
var minStr = ""
var minStrCount = 201
for i in 0 ..< strs.count {
let str = strs[i]
if minStrCount > str.count {
minStrCount = str.count
minStr = str
}
}
if minStr.isEmpty {
return ""
}
let filteredArray = strs.filter { $0 != minStr }.map { Array($0) }
if filteredArray.isEmpty {
return minStr
}
var ret = ""
var isChecked = false
for (i, c) in minStr.enumerated() {
for str in filteredArray {
if str[i] == c {
isChecked = true
} else {
isChecked = false
break
}
}
if isChecked {
ret.append(c)
} else {
return ret
}
}
return ret
}
풀이
-
다른 분의 멋진 코드
func longestCommonPrefix(_ strs: [String]) -> String {
guard var `prefix` = strs.min() else { return "" }
while `prefix`.isEmpty == false {
if strs.allSatisfy({ $0.hasPrefix(`prefix`) }) { break }
`prefix`.removeLast()
}
return `prefix`
}
- FlightyNEO
잘 배웠습니다.
-
댓글남기기