时间复杂度O(n)
class Solution {
public:
int strToInt(string str) {
long long ans=0;
int k=1,m=0,flag[str.size()+10];
int j=0;
for(j=0;j<str.size();j++)
{
if(str[j]!=' ')
{
if(str[j]=='+') k=1,j++;
if(str[j]=='-') k=-1,j++;
break;
}
}
for(int i=j;i<str.size();i++)
{
if(str[i]>='0'&&str[i]<='9') flag[m++]=str[i]-'0';
else break;
}
for(int i=0;i<m;i++)
{
ans+=flag[i]*(long long)(pow(10,m-i-1));
if(ans*k>=INT_MAX) return INT_MAX;
if(ans*k<=INT_MIN) return INT_MIN;
}
return ans*k;
}
};
缺点就是超了 long long 就gg,这题用Java大整数写就可以不用担心越界问题