Lexicographically Smallest Palindrome

EasyTwo PointersStringGreedy

Solution

export function makeSmallestPalindrome(s: string): string {
  const chars = [...s];
  let [start, end] = [0, s.length - 1];
  while (start <= end) {
    if (chars[start] < chars[end]) {
      chars[end] = chars[start];
    } else {
      chars[start] = chars[end];
    }
    start += 1;
    end -= 1;
  }
  return chars.join('');
}