题目描述
把一个字符串变成整数
字符串由英文字母(大写和小写)、数字(0-9)、’ ‘、’+‘、’-’ 和 ‘.’ 组成。
规则:
- 去掉前导空格
- 判断正负:去掉空格之后的第一个字符。
- 遇到结尾或者非数字符返回
解题思路
- 先去掉前导空格
- 判断正负
- 去掉前导0
ret*10+x
注意超过整数范围时要进行截断:保留最大或者最小即可。
具体可看代码。
代码
class Solution {
public:int myAtoi(string s) {int ret=0;int pos=0;int flag=1;//空格while(pos<s.size()&&s[pos]==' ') pos++;//正负if(pos<s.size()&&s[pos]=='-') flag=-1,pos++;else if(pos<s.size()&&s[pos]=='+') pos++;//数字while(pos<s.size()&&s[pos]>='0'&&s[pos]<='9'){//溢出//满足条件:ret*10+(s[pos]-'0')<INT_MAXif((INT_MAX-(s[pos]-'0'))/10<ret){if(flag==-1) return INT_MIN;else return INT_MAX;}ret=ret*10+(s[pos]-'0');pos++;}return ret*flag;}
};