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 []