题意:
怎么说,感觉这题要求好多的...之前各种条件满足不了,就补补补...
要求简单来说:
1.第一个非空字符:为正号,保留正号;
为负号,保留负号;
为数字保留数字(没有符号也是正数);
以上啥都不是,就不能转换,返回0;
2.判断完第一个非空字符后,剩下的非空字符:为数字,则保留;
非数字,全部舍去,返回结果;
3.满足上述两个任务要求的同时,请满足数字大小为int型 [−231, 231 − 1]
代码如下:
class Solution {
public:
int myAtoi(string str) {
int fu = 0;
long result = 0;
for (int i = 0;i<str.size();i++) {
if(fu==0){//第一个非空字符
if (str[i] == '-') fu = -1;
else if (str[i] == '+') fu = 1;
else if (str[i] == ' ') continue;
else if (str[i] <= '9' && str[i] >= '0') {
result=str[i] - '0';
fu=1;
}
else return 0;
}
else{//排除第一个非空字符后,非数字字符
if (str[i] <= '9' && str[i] >= '0'){
result = result * 10 +str[i] - '0';
if (result*fu > INT_MAX) return INT_MAX;
if (result*fu < INT_MIN) return INT_MIN;
}
else return result*fu;
}
}
return result*fu;
}
};