AcWing 87. 把字符串转换成整数
原题链接
中等
作者:
HelloZz
,
2021-01-14 09:49:55
,
所有人可见
,
阅读 244
算法1
(循环遍历) $O(n)$
时间复杂度
参考文献
C++ 代码
class Solution {
public:
int strToInt(string str) {
//定义一个扫描指针,从str[0]开始扫描
int k = 0;
//使用while循环来过滤前面的空格
while(k < str.size() && str[k] == ' ') k++;
//定义最终结果变量res
long long res = 0;
//minus标记正负数
int minus = 1;
//判断正负数,通过改变minus值来表示
if(k < str.size()){
if(str[k] == '-'){
minus = -1;
k++;
}else if(str[k] == '+'){
k++;
}
}
//while循环来扫描数字部分,当结果数字超过 1e11 时break
//res表示的是真实值得绝对值
while(k < str.size() && str[k] >= '0' && str[k] <= '9'){
res = res * 10 + str[k] - '0';
if(res > 1e11) break;
k++;
}
//获取真实值
res *= minus;
//看是否超过INT_MAX或者小于INT_MIN
if(res > INT_MAX) res = INT_MAX;
if(res < INT_MIN) res = INT_MIN;
//返回结果
return res;
}
};
参考的是y总的思路,自己复述了一遍而已