これを行うにはreduce
を使用できます。それはあなたの配列を繰り返し、現在の最長文字列を追跡し、終了時にそれを返します。例えば
:
let array = ["I'm Roi","I'm asking here","Game Of Thrones is just good"]
if let longestString = array.reduce(Optional<String>.None, combine:{$0?.characters.count > $1.characters.count ? $0:$1}) {
print(longestString) // "Game Of Thrones is just good"
}
(Optional.None
が今スウィフト3でOptional.none
であることに留意されたい)
これは、配列が空である可能性があるという事実を考慮してnil
開始値を使用して、として@JHZによって指摘されています(その場合はnil
を返します)。あなたの配列は、少なくとも一つの要素を持っている知っている場合、あなたはそれを簡略化することができます。それだけ反復しているので、一度各要素を
let longestString = array.reduce("") {$0.characters.count > $1.characters.count ? $0:$1}
、それが迅速sort()
を使用するよりもなります。私は速いベンチマークを行い、sort()
は約20倍遅く表示されます(早すぎる最適化のポイントはありませんが、それは言及する価値があると感じています)。
編集:私はそれがreduce
よりも、きれいだとあなたは、@のvacawamaのソリューションで行くお勧めします!
ありがとうございました!それはとても感謝しています - きれいでエレガントです:) –