String to Integer (atoi)
class Solution {
public:
bool isDigit(string::iterator iter) {
return '0' <= *iter && *iter <= '9';
}
int myAtoi(string s) {
long result = 0;
auto start = s.begin();
while (*start == ' ') start++;
bool isNeg = false;
if (*start == '-') {
isNeg = !isNeg;
start++;
} else if (*start == '+') start++;
auto end = start;
while (isDigit(end) && end != s.end()) {
end++;
}
while (*start == '0') start++;
for (auto it = start; it != end; it++) {
if(result > INT32_MAX/10 || (result == INT32_MAX/10 && *it > '7')){
return isNeg ? INT32_MIN : INT32_MAX;
}
result = result * 10 + (*it-'0');
}
return isNeg ? result * (-1) : result;
}
};