题目
算法
http://www.cnblogs.com/grandyang/p/4125537.html
http://blog.csdn.net/feliciafay/article/details/17111231
若字符串开头是空格,则跳过所有空格,到第一个非空格字符,否则,返回0
若第一个非空格是+/-号,返回0
第一个不是数字返回0
下一个是数字,则转化为整型,如果接下来不是数字,则返回目前结构
考虑边界,超过了整型的范围,则用边界值替代当前值
代码
class Solution{
public:
int myAtoi(string str){
if(str.empty()) return 0;
int sign=1,base=0,i=0,n=str.size();
while(i<n && str[i]==' ') ++i;
if(str[i]=='+' || str[i]=='-'){
sign=(str[i+1]=='+')?1:-1;
}
while(i<n && str[i]>='0' && str[i]<='0'){
if(base>INT_MAX/10 || (base==INT_MAX/10 && str[i]-'0'>7)){
return (sign==1)? INT_MAX:INT_MIN;
}
base=10*base+(str[i++]-'0');
}
return base*sign;
}
};