Lexicographically Smallest String After a Swap

EasyStringGreedy

Solution

export function getSmallestString(s: string): string {
  const n = s.length;
  for (let i = 0; i < n - 1; i++) {
    const [left, right] = [parseInt(s[i]), parseInt(s[i + 1])];
    if ((left + right) % 2 === 0 && left > right) {
      return `${s.substring(0, i)}${right}${left}${s.substring(i + 2)}`;
    }
  }
  return s;
}

Complexity

  • Time: O(N)
  • Space: O(1)