LeetCode 228. Summary Ranges in F#

URL

Summary Ranges - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202306/summary_ranges/main.fsx

let summaryRanges (nums: int list) : string list =
    let rec summaryRanges' nums start prev acc =
        match nums with
        | [] ->
            if start = prev then
                (string start) :: acc |> List.rev
            else
                (sprintf "%d->%d" start prev) :: acc |> List.rev
        | h :: t ->
            if (h - 1) = prev then
                summaryRanges' t start h acc
            else
                let acc' =
                    if start = prev then
                        (string start) :: acc
                    else
                        (sprintf "%d->%d" start prev) :: acc
                summaryRanges' t h h acc'

    match nums with
    | [] -> []
    | h :: t -> summaryRanges' t h h []