atoi

来源:互联网 发布:qq邮箱imap端口号 编辑:程序博客网 时间:2024/05/18 12:36
class Solution {public:int myAtoi(string str) {long long n = 0;int flag = 0;for (int i = 0; i < str.length(); i++){char ch = str.at(i);if (flag == 0 && ch == ' '){continue;}else if (flag == 0 && ch == '-'){flag = 1;}else if (flag == 0 && ch == '+'){flag = 2;}else if (ch >= 48 && ch <= 57){if (i == 0){flag = 3;}int rem = ch - '0';if (n > 214748364){                                       //如果n大于当前值,并且还有下一位,则肯定溢出了                                       if (flag == 1){return numeric_limits<int>::min();}else {return numeric_limits<int>::max();}}if (n == 214748364){                                      //如果等于214748364则需要分情况讨论,因为int 最大值是2147483647最小值 -2147483648                                      if (flag == 1 && rem >= 8){                                              //等于8没有溢出,但是大于8 就溢出了,返回最小值                                          return numeric_limits<int>::min();}else if ((flag == 2 || flag == 3) && rem > 7){                                             //大于7 就溢出了,返回最小值,等于7可以继续操作也不影响                                            return 2147483647;}}n = 10 * n + rem;}else{break;}}if (flag == 1){n = -n;}return n;}};
挨个遍历数字中位上的数值,访问一个,解析一个,遇到无法解析的返回0
0 0
原创粉丝点击