实现字符串转整形数字
遵循几个规则:
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;
}
};
转载于:https://www.cnblogs.com/ruoh3kou/p/10003468.html