AcWing 87. 把字符串转换成整数
原题链接
中等
作者:
小红花
,
2021-04-15 20:24:13
,
所有人可见
,
阅读 292
class Solution {
public:
int strToInt(string str) {
//第一步 删除空格,也就是移动下标
int k = 0;
while( k < str.size() && str[k] == ' ' ) k++;
long long res = 0;
//判断正负号
int minus = 1;
if( k < str.size() )
{
if(str[k] == '-') minus = -1,k++;
else if(str[k] == '+') k++;
}
//判断字符串中的数组,并且用res存储
while( k < str.size() && str[k] >= '0' && str[k] <= '9')
{
//进位
res = res * 10 + str[k] - '0';
if(res > 1e11 ) break; //大于很大的数字就跳出,防止INT_MAX
k++;//移动到下一位
}
//给最终的结果加上正负号
res *= minus;
//第四步判断:整数大于 INT_MAX,返回 INT_MAX 整数小于INT_MIN,返回 INT_MIN
if( res > INT_MAX ) res = INT_MAX;
if( res < INT_MIN ) res = INT_MIN;
return res;
}
};