8. 字符串转换整数 (atoi) (力扣)
程序员文章站
2022-07-14 18:32:10
...
本题纯模拟,就是注意一下溢出就行
TIPS:
1.
int main(){
printf("%d \n%d",INT_MAX,INT_MIN);
}
2.本题判定为溢出两个条件
(1)当前值>INT_MAX整除10
(2)当前值=INT_MAX整除10 并且 即将加上的数大于7
code:
int myAtoi(string s) {
int i=0,ans=0,f=1;
while(s[i]==' ')
i++;
if(s[i]=='-'||s[i]=='+')
f=(s[i++]=='+'?1:-1);
while(s[i]>='0'&&s[i]<='9'){
if(ans>INT_MAX/10||(ans==INT_MAX/10&&s[i]-'0'>7))
return f==1?INT_MAX:INT_MIN;
ans=ans*10+(s[i++]-'0');
}
return ans*f;
};