LeetCode 2697. Lexicographically Smallest Palindrome in F#
URL
Lexicographically Smallest Palindrome - LeetCode
Code
https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/problems/2697/main.fsx
let makeSmallestPalindrome (s: string) : string =
let rec makeSmallestPalindrome' (s: string) left right (acc: char array) =
if left > right then
System.String.Concat acc
else
if s.[left] < s.[right] then
acc.[left] <- s.[left]
acc.[right] <- s.[left]
else
acc.[left] <- s.[right]
acc.[right] <- s.[right]
makeSmallestPalindrome' s (left + 1) (right - 1) acc
let len = s.Length
let acc = Array.zeroCreate len
makeSmallestPalindrome' s 0 (len - 1) acc