leetcode第8题

来源:互联网 发布:没有网络视听许可证 编辑:程序博客网 时间:2024/04/19 17:45

8.Implement atoi to convert a string to an integer.

题目大意是实现自己的atoi函数,即将将字符串中的数字转换为int型,如果不能转换则将其转换为0,若超过整形范围。则以最大值或最小值保存。代码如下,运行时间12ms.ret保存的是结果,sign标记第一个字符是+或-,代码首先将i定位到第一个不是空格的位置,base保存了INT_MAX/10的结果,若ret>base了,则ret*10必定大于INT_MAX,若ret=base,而INT_MAX-ret*10 =7,则说明当前的字符不能大于7,否则就超过了最大整数.。

int myAtoi(string str)     {        int ret = 0, sign = 1;        i = str.find_first_not_of(' '), base = INT_MAX / 10;        if (str[i] == '+' || str[i] == '-')         sign = str[i++] == '+' ?: -1;        while (isdigit(str[i]))         {            if (ret > base || (ret == base && str[i] - '0' > 7))                return sign > 0 ? INT_MAX : INT_MIN;            ret = 10 * ret + (str[i++] - '0');        }        return sign * ret;    }
0 0
原创粉丝点击