[leetcode] 8. String to Integer (atoi) (Medium)

实现字符串转整形数字

遵循几个规则:

1. 函数首先丢弃尽可能多的空格字符,直到找到第一个非空格字符。

2. 此时取初始加号或减号。

3. 后面跟着尽可能多的数字,并将它们解释为一个数值。

4. 字符串可以在组成整数的字符之后包含其他字符,这些字符将被忽略,并且对该函数的行为没有影响。

5. 如果str中的第一个非空格字符序列不是有效的整数,则为0。

Runtime: 16 ms, faster than 62.80% of C++ online submissions for String to Integer (atoi).

class Solution
{
public:
  int myAtoi(string str)
  {
    long res = 0;
    int sign = 1;
    int i = 0;
    while (str[i] == ' ')
      ++i;

    if (str[i] == '+' || str[i] == '-')
    {
      sign = str[i] == '+' ? 1 : -1;
      ++i;
    }

    while (str[i] >= '0' && str[i] <= '9')
    {
      res = res * 10 + str[i] - '0';
      if (res * sign >= INT_MAX)
        return INT_MAX;
      if (res * sign <= INT_MIN)
        return INT_MIN;
      ++i;
    }

    return res * sign;
  }
};

 

posted @ 2018-11-22 19:44  Ruohua3kou  阅读(148)  评论(0编辑  收藏  举报