21
1
open System.Collections.Generic
2
3
let canConstruct (ransomNote : string) (magazine : string) =
4
let letters = new Dictionary<char, int>()
5
ransomNote
6
|> Seq.iter (fun char ->
7
match letters.TryGetValue char with
8
| true, n -> letters.[char] <- n+1
9
| _ -> letters.[char] <- 1
10
)
11
12
magazine
13
|> Seq.iter (fun char ->
14
match letters.TryGetValue char with
15
| true, n when n > 1 -> letters.[char] <- n-1
16
| true, _ -> letters.Remove char |> ignore
17
| _ -> ())
18
19
letters.Count = 0
20
21
printfn "%A" <| canConstruct "aa" "abba"