Implement function atoi
to convert a string to an integer.
If no valid conversion could be performed, a zero value is returned.
If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.
Example
"10" => 10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1
class Solution {
public:
/**
* @param str: A string
* @return An integer
*/
int atoi(string str) {
// write your code here
if (str.size() == 0)
return 0;
int idx = 0;
while (idx < str.size())
if (str[idx] != ' ')
break;
else
idx++;
bool negativeFlag = false;
if (str[idx] == '+')
{
idx++;
}
else if (str[idx] == '-')
{
idx++;
negativeFlag = true;
}
double result = 0; //非常重要;
while (idx < str.size() && str[idx] >='0' && str[idx] <= '9')
{
result = result*10 + (str[idx]-'0');
idx++;
}
if (negativeFlag)
result = -1 * result;//这里需要先计算负数
if (result > INT_MAX)
return INT_MAX;
if (result < INT_MIN)
return INT_MIN;
return (int)result;
}
};