leetcode原题:其实也就是实现一个atoi的函数。
思路如下:首先要找到数字出现的位置,如果数字前面有空格,不做处理,往下继续遍历。最后再判断是否为32位所能容纳的范围内。
C++代码如下:
int Myatoi(string s)
{
if(s.empty() == true)
return 0;
int temp = 0;
bool sign = false;
int i = 0;
while(i < s.size() && s[i] == ' ')//这一步是为了把空格隔过去
{
i++;
}
if(s[i] == '+')
{
i++;
}
else if(s[i] == '-')
{
sign = true;
i++;
}
for(; i < s.size(); i++)
{
if(s[i] < '0' || s[i] > '9')
break;
if(temp > INT_MAX / 10 || (temp == INT_MAX / 10 && (s[i] - '0')> INT_MAX % 10))//判断最后一个元素是否比最大元素的最后一个元素大
{
return sign == true ? INT_MIN:INT_MAX;
}
temp = temp * 10 + s[i] - '0';
}
if(sign == true)
return -temp;
else
return temp;
}