您的位置:首页 > Web前端

《剑指offer》-把字符串转换成整数

2016-07-16 09:10 302 查看


题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

解法:

1.判断字符串指针是否为NULL,字符串是否为空“\0”

2.判断第一个正、负号

3.进行循环判断,核心转换就是字符-‘0’就是数字了,然后*10,不断累加即可

4.还要判断是否溢出,int为4个字节,所以正数上限为0x7FFFFFFF,负数的底线为0x8FFFFFFF

class Solution {
public:
int StrToInt(string str) {
long long num = 0;
const char * cstr = str.c_str();
if(cstr != NULL & *cstr != '\0') {
bool minus = false;
if(*cstr == '+')
cstr++;
else if(*cstr == '-') {
cstr++;
minus = true;
}
if(*cstr != '\0') {
num = StrToIntCore(cstr, minus);
}
}
return (int)num;
}
long long StrToIntCore(const char * diggt, bool min) {
long long num = 0;
while(*diggt != '\0') {
int flag = min ? -1:1;
if(*diggt < '9' && *diggt > '0') {
num = num * 10 + flag * (*diggt - '0');
if((!min && num > 0x7FFFFFFF) || (min && num < (signed int)0x80000000)) {
num = 0;
break;
}
diggt++;
}
else {
num = 0;
break;
}
}
return num;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: