問題:Common Prefix
PrefixとはStringの冒頭につける文字列で、例えば、
"undecided" と"unchange"の Prefixは "un"である。
今回の問題は、Stringの配列から、String同士でマッチする、一番長いPrefixを見つけ出して返す。
例:
input: ["flower", "flour", "flappecino"]
return: "flo"
input ["flower", "garbage", "onion"]
return: ""
ヒント:
解答:
func longestCommonPrefix(_ strs: [String]) -> String {
var storedPrefix = ""
var commonPrefix = ""
let array = strs
for (index, word) in array.enumerated() {
for (indexTwo, wordTwo) in array.enumerated(){
if index != indexTwo {
let arrayA = Array(word.characters)
let arrayB = Array(wordTwo.characters)
if word == "" || wordTwo == ""{
break
}
for (index,a) in arrayA.enumerated(){
if a == arrayB[index] {
commonPrefix.insert(a, at: commonPrefix.endIndex)
}
if a != arrayB[index] {
break
}
}
if commonPrefix.characters.count > storedPrefix.characters.count {
storedPrefix = commonPrefix
}
commonPrefix = ""
print(storedPrefix)
}
}
}
return storedPrefix
}
メモ / ポイント
一応解きましたが、ループを回しすぎているので、もっといい解決方法があるはず・・・!