String to Integer (atoi)(C++字符串转换整数 (atoi))
(1)模拟法
class Solution {
public:
int myAtoi(string s) {
int i=0,tag=1;
long long int sum=0;
while(i<s.length()) {
if(s[i]==' ') i++;
else if(s[i]=='-') {
tag=-1;
i++;
while(i<s.length() && isdigit(s[i])) {
if(sum>INT_MAX || sum<INT_MIN) break;
sum=sum*10+(s[i]-'0');
i++;
}
break;
} else if(s[i]=='+') {
i++;
while(i<s.length() && isdigit(s[i])) {
sum=sum*10+(s[i]-'0');
i++;
}
break;
} else if(!isdigit(s[i])) {
break;
} else if(isdigit(s[i])) {
while(i<s.length() && isdigit(s[i])) {
if(sum>INT_MAX || sum<INT_MIN) break;
sum=sum*10+(s[i]-'0');
i++;
}
break;
}
}
sum*=tag;
if(sum<=INT_MAX && sum>=INT_MIN) return sum;
else if(sum>INT_MAX) return INT_MAX;
else return INT_MIN;
}
};
还没有评论,来说两句吧...