【LeetCode】Easy: Longest Common Prefix
Longest Common Prefix
https://leetcode.com/problems/longest-common-prefix/
回答
class Solution { func longestCommonPrefix(_ strs: [String]) -> String { var min = strs.min()! while min.count > 0 { if strs.filter({ $0.contains(min) }).count == strs.count { return min } min = String(min.dropFirst()) } min = strs.min()! while min.count > 0 { if strs.filter({ $0.contains(min) }).count == strs.count { return min } min = String(min.dropLast()) } return "" } }
修正
class Solution { func longestCommonPrefix(_ strs: [String]) -> String { guard var dropFirstMin = strs.min() else { return "" } while dropFirstMin.count > 0 { if strs.filter({ $0.contains(dropFirstMin) }).count == strs.count { break } dropFirstMin = String(dropFirstMin.dropFirst()) } guard var dropLastMin = strs.min() else { return "" } while dropLastMin.count > 0 { if strs.filter({ $0.contains(dropLastMin) }).count == strs.count { break } dropLastMin = String(dropLastMin.dropLast()) } return dropFirstMin.count > dropLastMin.count ? dropFirstMin :dropLastMin } }
prefix だけでいいのに、共通の文字列を探してしまった…
再修正
class Solution { func longestCommonPrefix(_ strs: [String]) -> String { guard var min = strs.min() else { return "" } while min.count > 0 { if strs.filter({ $0.hasPrefix(min) }).count == strs.count { break } min = String(min.dropLast()) } return min } }
感想
問題の勘違いで難しくしてしまった。