AcWing 87. 把字符串转换成整数
原题链接
中等
作者:
郡呈
,
2019-08-14 22:50:19
,
所有人可见
,
阅读 3172
class Solution {
public:
int strToInt(string str) {
int k = 0;
//去空格
while(k < str.size() && str[k] == ' ') k++;
bool is_minus = false;
long long num = 0;
//判正负
if(str[k] == '+') k++;
else if(str[k] == '-') k++, is_minus = true;
//字符变数字
while(k < str.size() && str[k] >= '0' && str[k] <= '9') {
num = num * 10 + str[k] - '0';
k++;
}
//处理特例
if(is_minus) num *= -1;
if(num > INT_MAX) num = INT_MAX;
if(num < INT_MIN) num = INT_MIN;
return (int) num;
}
};
数据加强了,现在过不了了,得在算的时候就判断边界
博主用的是long long,不用判断边界,现在还得除前面的0那一步
现在过不了了,换成double可以。
可以不用完全算完,把if判断放在while里面。
为啥double可以,long long 不可以
num = num * 10 + str[k] - ‘0’ 这一步在lc上会报integer overflow
怎么解决呢
增加限制num>1e10时,跳出循环!
应该算的时候就判断边界 不然会溢出
不会的,long long哦
好吧,这样就多算了一些