// overflow
// /**
// * @param {string} str
// * @return {number}
// */
// var myAtoi = function (str) {
// // 最大位数,记录位,返回值,开始值,符号位
// let max = 0,
// i = 0,
// n,
// start = 0,
// j = 0,
// flag = 0
// str = str.trim()
// // 单个符号
// if ((str.length == 1) && (str > '9' || str < '0')) {
// console.log(0)
// return
// }
// if ((str.length == 1) && (str.charAt(0) < '9' && str.charAt(0) > '0')) {
// console.log(Number(str))
// return
// }
// // +/-加非数字
// if (str.charAt(0) == '-' || str.charAt(0) == '+') {
// if ('0' > str.charAt(1) || str.charAt(i) > '9') {
// console.log(0)
// return
// }
// if (str.charAt(0) == '-') {
// flag = 1
// }
// i = 1
// max = 1
// str = str.substring(1)
// }
// while (i < str.length) {
// if ('0' <= str.charAt(i) && str.charAt(i) < '9') {
// if (str.charAt(i) == '0' && j == 0) {
// i++
// start++
// j = 1
// continue
// } else {
// max++
// i++
// }
// } else {
// break
// }
// }
// n = Number(str.substring(start, start + max)) * ((-1) ** flag)
// if (n > 2147483647) {
// console.log(2147483647)
// return
// }
// if (n < -2147483648) {
// console.log(-2147483648)
// return
// }
// console.log(n)
// return
// };
/**
* @param {string} str
* @return {number}
*/
var myAtoi = function (str) {
let n = Number.parseInt(str)
if (n > 2147483647) {
n = 2147483647
}
if (n < -2147483648) {
n = -2147483648
}
return Number.isNaN(n)? 0: n
};
值得注意的是,Number(str)仅支持2^ 53。。。否则会溢出。Number.parseInt(xxx)不会溢出。
网友评论