这道题很简单,我昨天写的时候,没注意越界,第一次写用例只通过百分之八十五,我的天,查个越界查一个小时,算了,做出来就好,特别注意的是要先声明res为long long类型,不然就会越界
思路:从后向前遍历字符串,直到遍历到str[0]停止,再单独判断str[0]
class Solution {
public:
int StrToInt(string str)
{
long long res = 0;
int n = 0;
if (str == "")
return 0;
for (int i = str.size() - 1; i > 0; i--)
{
if (!(str[i] >= '0'&&str[i] <= '9'))
return 0;
else
{
res += ((str[i] - '0')*pow(10, n));
n++;
}
}
if (str[0] == '+')
{
if (res> INT_MAX)
return 0;
else
return res;
}
else if (str[0] == '-')
{
if (-res < INT_MIN)
return 0;
else
return -res;
}
else if (str[0] >= '0'&&str[0] <= '9')
{
res += ((str[0] - '0')*pow(10, n));
if (res < INT_MAX)
return res;
else
return 0;
}
else
return 0;
}
};