美文网首页
LeeCode 8. String to Integer (at

LeeCode 8. String to Integer (at

作者: scoyzhao | 来源:发表于2018-03-10 13:05 被阅读0次
image.png image.png
// 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)不会溢出。

相关文章

网友评论

      本文标题:LeeCode 8. String to Integer (at

      本文链接:https://www.haomeiwen.com/subject/ngdmfftx.html