您的位置:首页 > Web前端

剑指Offer-67:把字符串转换成整数

2018-03-29 22:36 393 查看

题目:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

链接:

剑指Offer(第2版):P318

思路标签:

边界条件

解答:

该题目主要考察的就是边界条件:数据上下溢出、空字符串、只有正负号、有无正负号、错误标志输出

class Solution {
public:
enum Status { kValid = 0, kInvalid };
int g_nStatus = kValid;

int StrToInt(string str) {
g_nStatus = kInvalid;
long long num = 0;
const char* cstr = str.c_str();
if ((cstr != nullptr) && (*cstr != '\0'))
{
int minus = 1;
if (*cstr == '-')
{
minus = -1;
cstr++;
}
else if (*cstr == '+')
cstr++;

while (*cstr != '\0')
{
if (*cstr > '0' && *cstr < '9')
{
g_nStatus = kValid;
num = num * 10 + (*cstr - '0');
cstr++;
if (((minus>0) && (num > 0x7FFFFFFF)) ||
((minus<0) && (num > 0x80000000)))
{
g_nStatus = kInvalid;
num = 0;
break;
}
}
else
{
g_nStatus = kInvalid;
num = 0;
break;
}
}

if (g_nStatus == kValid)
num = num * minus;

}
return (int)num;
}
};


c++相关

string:

http://www.cplusplus.com/reference/string/string/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息