String to Integer (atoi)

MediumString

Solution

const MAX_NUMBER = 2 ** 31 - 1;
const MIN_NUMBER = -(2 ** 31);
 
const BLANK = '';
const NUMBER_WITH_WHITE_SPACE = /([\d-+]) +(\d*)/g;
const WHITE_SPACE = / /g;
 
function clamp(num: number) {
  return Math.max(Math.min(MAX_NUMBER, num), MIN_NUMBER);
}
 
function removeWhiteSpaces(s: string) {
  return s.replace(NUMBER_WITH_WHITE_SPACE, '$1_$2').replace(WHITE_SPACE, BLANK);
}
 
function convert(s: string) {
  const regex = /^([+-]{0,1}\d+)/;
  const result = regex.exec(s);
  if (result === null) {
    return 0;
  }
  const num = parseInt(result[0]);
  return num;
}
 
export function myAtoi(s: string): number {
  return clamp(convert(removeWhiteSpaces(s)));
}