题目




B站讲的很好的视频
【从零开始刷力扣学C++------第八题:字符串转换整数(atoi)】 https://www.bilibili.com/video/BV1gRN2enEEG/?share_source=copy_web\&vd_source=bb58b6e3e5f53973729fd5b59301b3dd
题解
cpp
class Solution {
public:
int myAtoi(string s) {
int n = s.size();
int ans = 0;//存放结果
int sign = 1;//1为正号,-1为负号
int i = 0;
//空格
while(s[i]==' '){
i++;
if(i==n) return 0;
}//跳过空格
//符号
if(s[i] == '-') sign = -1;
if(s[i] == '-' || s[i] == '+') i++;//跳过符号位
for(;i<n;i++){
if(s[i]>'9' || s[i]<'0') break;
//INT_MAX=2147483647
//INT_MIN=-2147483648
if(ans>INT_MAX/10) return INT_MAX;
else if(ans==INT_MAX/10 && s[i]>'7') return INT_MAX;
if(ans<INT_MIN/10) return INT_MIN;
else if(ans==INT_MIN/10 && s[i]>'8') return INT_MIN;
ans = ans*10 + sign*int(s[i]-'0');
}
return ans;
}
};