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