剑指offer48-把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0;
以下解答牛客网,通过率85%,测试用例-2147483649,无法在int中保存;
    int StrToInt(string str) {
        //正负,越界,2的31次方2147483648
        //int范围是-2^31,2^31-1;
        if(str==""||str[0]=='0') return 0;
        
        int i=0;

        long long res=0;
        if(str[0]=='+'||str[0]=='-'){i++;}
        while(str[i]!='')
        {
            if(str[i]>'9'||str[i]<'0')return 0;
            res=res*10+(str[i]-'0');
            i++;
        }
       //if(str[0]=='-'&&res>2147483648)return 0;
        //if(str[0]!='-'&&res>2147483647)return 0;
        return (str[0]=='-')?-res:res;
        //return res;
        //-2147483649输出为原值,已超过int能存储的范围
    }

原文地址:https://www.cnblogs.com/trouble-easy/p/12980505.html