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

来源:互联网 发布:单片机仿真软件怎么用 编辑:程序博客网 时间:2024/04/29 22:45

题目描述

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


解法:

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;    }};


0 0
原创粉丝点击