LeetCode 2375. Construct Smallest Number From DI String in F#

URL

Construct Smallest Number From DI String - LeetCode

Code

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

let smallestNumber (pattern: string) : string =
    let rec smallestNumber' pattern i stack (acc: char list) =
        let stack = (char i + char '0') :: stack

        match pattern with
        | [] ->
            stack
            |> List.fold (fun acc n -> n :: acc) acc
            |> List.rev
            |> System.String.Concat
        | h :: t ->
            if h = 'I' then
                let acc = stack |> List.fold (fun acc n -> n :: acc) acc
                smallestNumber' t (i + 1) [] acc
            else
                smallestNumber' t (i + 1) stack acc

    smallestNumber' (Seq.toList pattern) 1 [] []