Sword finger offer: преобразовать строку в целое число

Описание заголовка

Для преобразования строки в целое число требуется библиотечная функция, которая не может преобразовать строку в целое число. Если значение равно 0 или строка не является допустимым значением, возвращается 0

Введите описание:

Введите строку, включая буквенно-цифровые символы, может быть пустым

Описание выхода:

Если это допустимое числовое выражение, верните число, в противном случае верните 0

Пример 1

запись

+2147483647 
    1a33

экспорт

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);
    }
}

 

Опубликовано 34 оригинальных статей · Мне нравится 10 · Посетителей 10,000+

рекомендация

отblog.csdn.net/weixin_41111088/article/details/105183209
рекомендация