LeetCode 744. Find Smallest Letter Greater Than Target in F#

URL

Find Smallest Letter Greater Than Target - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/0744/main.fsx

let nextGreatestLetter (letters: char[]) (target: char) : char =
    let rec nextGreatestLetter' left right (letters: char[]) =
        if left > right then
            if left >= letters.Length then
                letters.[0]
            else
                letters.[left]
        else
            let mid = left + (right - left) / 2

            if letters.[mid] > target then
                nextGreatestLetter' left (mid - 1) letters
            else
                nextGreatestLetter' (mid + 1) right letters

    nextGreatestLetter' 0 (letters.Length - 1) letters