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

잘 배웠습니다.

-

댓글남기기