LeetCode 647. Palindromic Substrings in F#

URL

leetcode.com/problems/palindromic-substrings

Code

github.com/syohex/dotnet-study/blob/master/..

let countSubstrings (s: string) : int =
    let len = s.Length
    let cs = s |> Seq.toArray
    let dp = Array2D.init len len (fun _ _ -> false)
    let mutable ret = 0

    for i in 0 .. (len - 1) do
        dp.[i, i] <- true
        ret <- ret + 1

    for i in 0 .. (len - 2) do
        dp.[i, i + 1] <- cs.[i] = cs.[i + 1]
        if dp.[i, i + 1] then ret <- ret + 1

    for i in 3..len do
        for j in 0 .. (len - i) do
            let k = j + i - 1
            dp.[j, k] <- dp.[j + 1, k - 1] && cs.[j] = cs.[k]
            if dp.[j, k] then ret <- ret + 1

    ret