剑指offer-字符串转化为数字

来源:互联网 发布:软件测试职位 编辑:程序博客网 时间:2024/06/05 14:44

问题

题目:[剑指offer-字符串转化为数字]

思路

这个题,思路倒是不难。考虑的情形比较多啊。
我遇见的主要bug:
1. 只有1个符号的情形
2. 由于负数的得到是正数进行转化,所以,别忘了最后的转化
3. 考虑-2147483648,先提取正数部分,2147483648,已经溢出了。所以,需要long long 存储。
4. 还有就是,字符串表示的数字有可能已经溢出了比如,+4212344212这样的数字。返回0.

代码

class Solution {public:    int StrToInt(string str) {        int sz = str.size();        if( !sz ) return 0;        if(1==sz){            if( !isdigit(str[0]) )                return 0;        }        bool flg = true;        for(int i = 0; i < sz; ++i){            if( 0 == i ){                if( !isdigit(str[i]) ){                    if( str[0] == '-' ) flg = false;                    else if ( str[0] == '+' ) flg = true;                     else return 0;                }            }            else{                if( !isdigit(str[i]) ) return 0;            }        }        long long val;        stringstream ss;        if( flg ){            ss << str;            ss >> val;        }        else{            ss << str.substr( 1, str.size() - 1 );            ss >> val;            val *= -1;        }        // 加入对上溢以及下溢的判断        return (int)val;    }};
原创粉丝点击