LeetCode 228. Summary Ranges in F#
URL
leetcode.com/problems/summary-ranges
Code
github.com/syohex/dotnet-study/blob/master/..
let toStr (startNum: int) (endNum: int) : string =
if startNum = endNum then
sprintf $"{startNum}"
else
sprintf $"{startNum}->{endNum}"
let summaryRanges (nums: int list) : string list =
let rec summaryRanges' nums start prev acc =
match nums with
| [] -> ((toStr start prev) :: acc) |> List.rev
| head :: tail ->
if prev + 1 = head then
summaryRanges' tail start head acc
else
summaryRanges' tail head head ((toStr start prev) :: acc)
match nums with
| [] -> []
| head :: tail -> summaryRanges' tail head head []