LeetCode 856. Score of Parentheses in F#
URL
leetcode.com/problems/score-of-parentheses
Code
github.com/syohex/dotnet-study/blob/master/..
let scoreOfParentheses (s: string) : int =
let rec scoreOfParentheses' cs stack =
match cs with
| [] ->
match stack with
| [] -> failwith "never happen"
| v :: _ -> v
| h :: t ->
if h = '(' then
scoreOfParentheses' t (0 :: stack)
else
match stack with
| [] -> failwith "never happen"
| v :: [] ->
let score = if v = 0 then 1 else v * 2
scoreOfParentheses' t [ score ]
| v1 :: v2 :: rest ->
let score = if v1 = 0 then v2 + 1 else v2 + v1 * 2
scoreOfParentheses' t (score :: rest)
scoreOfParentheses' (s |> Seq.toList) []