Sword finger offer: convert string to integer

Title description

To convert a string to an integer, a library function that cannot convert a string to an integer is required. If the value is 0 or the string is not a valid value, it returns 0

Enter description:

Enter a string, including alphanumeric symbols, can be empty

Output description:

If it is a legal numeric expression, return the number, otherwise return 0

Example 1

Input

+2147483647 
    1a33

Output

2147483647
    0
long long string2int(string &s) {
    int len = s.size();
    long long sum = 0;
    for (int i = len - 1; i >= 0; --i) {
        if (!isdigit(s[i])) return 0;
        sum += (s[i] - '0') * pow(10, len - 1 - i);
        cout << sum << endl;
    }
    return sum;
}

int StrToInt(string str) {
    int len = str.size();
    if (len <= 0) return 0;
    if (str[0] == '+') {
        string s = str.substr(1, len - 1);
        long long tmp = string2int(s);
        if(tmp > INT32_MAX) return 0;
        return int(tmp);
    } else if (str[0] == '-') {
        string s = str.substr(1, len - 1);
        long int tmp = -string2int(s);
        if(tmp < INT32_MIN) return 0;
        return int(tmp);
    } else{
        long long tmp = string2int(str);
        if(tmp > INT32_MAX) return 0;
        return int(tmp);
    }
}

 

Published 34 original articles · Like 10 · Visitors 10,000+

Guess you like

Origin blog.csdn.net/weixin_41111088/article/details/105183209