troubleasy

导航

 

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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]!='\0')
        {
            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能存储的范围
    }

posted on 2020-05-28 14:11  troubleasy  阅读(129)  评论(0编辑  收藏  举报