我的js算法爬坑之旅-字符串转换整数 (atoi)

118 阅读1分钟

第十六天:力扣第8题,字符串转换整数 (atoi)

地址:leetcode-cn.com/problems/st…

思路:一开始是傻瓜思路,别看,就图一乐,真学技术看最后面的。

var myAtoi = function(s) {
    s = s.split("");
    let a = [];
    for (let i = 0,j = 0;i < s.length; i++,j++)
    {
        if(s[i]!=" ")
        {
            a[j]=s[i];
        }
        else{
            j--;
        }
    }
    let c = "2147483648";
    let b = [];
    let flag = 0;
    let flag2 = 0;
    if(a[0]=='-'||a[0]=="+"||(a[0]<=9&&a[0]>=0))
    {
        for(let i = 0,j = 0;i < a.length; i++,j++)
        {
            if((i==0&&a[0]=='-')||(i==0&&a[0]=='+'))
            {
                flag = 1;
                i=i+1;
                if(a[1]<=9&&a[1]>=0)
                {}
                else{
                    return 0;
                }
            }
            if(a[i]<=9&&a[i]>0)
            {
                b[j]=a[i];
                flag2 = 1;
            }
            else if (a[i]==0&&flag2==1)
            {
                b[j]=a[i];
            }
            else if(a[i]==0&&flag2==0)
            {
                j--;
            }
            else{
                if(flag2==0)
                {
                    return 0;
                }
                else
                {
                    break;
                }
            }
        }
        if(flag == 0)
        {
            if(b.length > 10)
            {
                return 2147483647;
            }
            else if (b.length < 10)
            {
                return b.join("");
            }
            else{
                if(b.join("")>'2147483647')
                {
                    return 2147483647;
                }
                else{
                    return b.join("");
                }
            }
        }
        else{
            if(a[0]=="-")
            {
            if(b.length > 10)
            {
                return "-2147483648";
            }
            else if (b.length < 10)
            {
                return "-"+b.join("");
            }
            else{
                if(b.join("")>'2147483648')
                {
                    return "-2147483648";
                }
                else{
                    return "-"+b.join("");
                }
            }
            }
            else{

            if(b.length > 10)
            {
                return "2147483647";
            }
            else if (b.length < 10)
            {
                return b.join("");
            }
            else{
                if(b.join("")>'2147483647')
                {
                    return "2147483647";
                }
                else{
                    return b.join("");
                }
            }
            }
        }
    }
    else
    {
        return 0;
    }

};

贴个真大佬的代码:

var myAtoi = function(str, n) {
    return (n = Math.pow(2, 31)) && Math.min(Math.max(parseInt(str) || 0, -n),  --n)
};  

就是parseInt方法,mmp.