8.字符串转换到整数

65 阅读1分钟

我的回答(没写出来)

function myAtoi(s: string): number {
  s = s.trim();
  const charList = new Array(10).fill(0).map((_, i) => String(i));
  let res = 0;
  if (s[0] !== "-" && s[0] !== "+" && +s[0] === null) return 0;

  for (let i = 0; i < s.length; i++) {
    if (charList.includes(s[i])) {
      res = res * 10 + +s[i];
    } else if (!s[i]) {
      continue;
    } else {
      break;
    }
  }

  return s[0] !== "-" ? -res : res;
}

console.log(myAtoi("   -42"));

其他回答

function myAtoi(s: string): number {
  const r = parseInt(s);
  const min = Math.pow(-2, 31);
  const max = Math.pow(2, 31) - 1;
  if (isNaN(r)) {
    return 0;
  } else if (r < min) {
    return min;
  } else if (r > max) {
    return max;
  } else {
    return r;
  }
}

console.log(myAtoi("21474836460"));