LeetCode 150. Evaluate Reverse Polish Notation in F#
URL
https://leetcode.com/problems/evaluate-reverse-polish-notation/description/
Code
https://github.com/syohex/dotnet-study/blob/master/fsharp/leetcode/problems/0150/main.fsx
let evalRPN (tokens: string list) : int =
let rec evalRPN' tokens stack =
match tokens with
| [] -> stack |> List.head |> int
| h :: t ->
match h with
| "+" ->
let n =
(List.head stack)
+ (stack |> List.tail |> List.head)
evalRPN' t (n :: (stack |> List.skip 2))
| "-" ->
let n =
(stack |> List.tail |> List.head)
- (List.head stack)
evalRPN' t (n :: (stack |> List.skip 2))
| "*" ->
let n =
(stack |> List.tail |> List.head)
* (List.head stack)
evalRPN' t (n :: (stack |> List.skip 2))
| "/" ->
let n =
(stack |> List.tail |> List.head)
/ (List.head stack)
evalRPN' t (n :: (stack |> List.skip 2))
| _ -> evalRPN' t ((h |> int64) :: stack)
evalRPN' tokens []