实现将字符串转换成整数的功能。
1.str[i] - '0' 将对应位置的字符转换成整数
2.str[i] >= '0' && str[i] <= '9' 判断是否整数
3.进入每一个步骤首先判断是否越界
4.完成该步判断后,i++保证循环继续进行
具体步骤:
1.首先跳过前面所有空格
2.判断是否有符号的标识,有符号的标识就保存起来
3.进入计数步骤(如果发现有字符,直接跳出),在计数之前,先判断下一步是否会溢出,判断的方法为
if( base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - '0' > 7 ) )
class Solution { public: int myAtoi(string str) { if(str.empty()) return 0; int base = 0, i = 0, sign = 1, n = str.size(); while(i < n && str[i] == ' ') i++; if(i < n && (str[i] == '+' || str[i] == '-')) sign = (str[i++] == '+') ? 1 : -1; while(i < n && str[i] >='0' && str[i] <='9'){ if(base > INT_MAX / 10 ||(base == INT_MAX / 10 && str[i] - '0' > 7)) return (sign == 1)? INT_MAX : INT_MIN; base = base * 10 + (str[i++] - '0'); } return sign * base; } };

本文详细解析了如何使用C++实现字符串到整数的转换,包括处理前导空格、正负号、数字字符以及溢出情况的具体算法。通过一个完整的代码示例,展示了每个步骤的实现细节。
1448

被折叠的 条评论
为什么被折叠?



