剣指オファー:文字列を整数に変換

タイトルの説明

文字列を整数に変換するには、文字列を整数に変換できないライブラリ関数が必要です。値が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