
代码 :
class Solution {public:int myAtoi(string str) {// trim all leading 0;int l = 0;while(l < str.size() && str[l] == ' ') {l ++;}if(l == str.size()) {return 0;}// check the signint sign = 1;if (str[l] == '-') {sign = -1;l ++ ;}else if (str[l] == '+') {sign = 1;l ++ ;}// parse the integerint res = 0;while(l < str.size() && isdigit(str[l])) {int digit = str[l] - '0';// res * 10 + digit > INT_MAXif(sign == 1 && (res > (INT_MAX - digit) / 10) ) {return INT_MAX;}// -res * 10 - digit < INT_MINelse if (sign == -1 && (-res < (INT_MIN + digit) / 10) ) {return INT_MIN;}// [-2^31, 2^31 - 1]if( -res * 10 - digit == INT_MIN)return INT_MIN;res = res * 10 + digit;l ++ ;}res *= sign;return res;}};
class Solution {public:int myAtoi(string s) {/* skip all leading space */int l = 0;while(l < s.size() && s[l] == ' ')l ++;if(l == s.size()) return 0;/* check the sign of int */int sign = 1;if(s[l] == '-') sign = -1, l ++;else if (s[l] == '+') l ++;long long res = 0;while(l < s.size() && isdigit(s[l])) {res = res * 10 + s[l] - '0';l ++ ;if(res > INT_MAX) break;}res *= sign;if(res > INT_MAX) return INT_MAX;if(res < INT_MIN) return INT_MIN;return res;}};
