题目描述
blablabla
样例
class Solution {
public:
int strToInt(string str) {
int k=0;
//先过掉空格
for(char c:str)
{
if(c==' ')
k++;
}
//再处理±问题
int num=1;
if(str[k]=='-')
{
num=-1;
k++;
}
else if(str[k]=='+') k++;
//开始处理数字,用每循环*10进行
long long res=0;//数值会很大,要注意用long long
while(k<str.size()&&str[k]>='0'&&str[k]<='9')
{
res=res*10+str[k]-'0';//str[k]-'0'这里就是将字符串变成0-9的整数
k++;
//因为存入的是绝对值。所以就无法直接与 INT_MAX和INT_MIN进行判断
//所以这里的想法就是,通过计算机得到2的31次方是10位数,所以只要判断res>10的11次方就一定不在范围里
if(res>1e11) break;
}
//这时再加上±,与 INT_MAX和INT_MIN进行判断
res=res*num;
if(res>=INT_MAX) res=INT_MAX;
if(res<=INT_MIN) res=INT_MIN;
return res;
}
};