您的位置:首页 > Web前端

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

2017-07-26 20:37 387 查看

问题

题目:[剑指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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: