LeetCode 1079. Letter Tile Possibilities in F#
URL
Letter Tile Possibilities - LeetCode
Code
let numTilePossibilities (tiles: string) : int =
let rec numTilePossibilities' (table: int[]) =
seq { 0..25 }
|> Seq.fold
(fun acc i ->
if table.[i] = 0 then
acc
else
table.[i] <- table.[i] - 1
let acc = acc + 1 + numTilePossibilities' table
table.[i] <- table.[i] + 1
acc)
0
let table =
tiles
|> Seq.fold
(fun (acc: int[]) c ->
let index = int c - int 'A'
acc.[index] <- acc.[index] + 1
acc)
(Array.zeroCreate 26)
numTilePossibilities' table