문제설명
- 문자열 배열이 주어졌을 때, 각 문자열들의 공통된 접두사를 찾는다.
- 0 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 은 오직 영어 소문자만을 갖는다.
풀이 방법
- 두 문자열의 공통 접두사 부분만 추출하는
merge(_ :String, _ :String)
함수를 구현한다.
- 배열 객체를 하나의 문자열로 줄여나가기 위해 reduce 구문을 사용한다.
- 빈 리스트가 넘어오는 예외를 guard 구문으로 처리했다.
func longestCommonPrefix(_ strs: [String]) -> String {
guard !strs.isEmpty else {
return ""
}
return strs.reduce(strs[0], merge)
}
func merge(_ str1: String, _ str2: String) -> String {
let length = str1.count < str2.count ? str1.count : str2.count
let arr1 = Array(str1)
let arr2 = Array(str2)
var commonLength = 0
for i in 0..<length {
if (arr1[i] != arr2[i]) {
break;
}
commonLength+=1
}
return String(arr1[0..<commonLength])
}
print(merge("abc", "ab"))
print(merge("flower", "flow"))
print(longestCommonPrefix(["flower","flow","flight"])) //fl
print(longestCommonPrefix(["dog","racecar","car"])) // ""
print(longestCommonPrefix(["dog","doracecar","dcar"])) // d
print(longestCommonPrefix(["dog"])) // dog
print(longestCommonPrefix([])) // ""