#include #include #include using namespace std; class Solution { public: int myAtoi(string str) { int s_size = str.size(); if(0 == s_size) { return 0; } int result = 0; bool minus_flag = false; bool flag = false; const char* data = str.data(); int i = 0; int j = 0; for(i = 0; i < s_size; i++) { //first find out first non-whitespace character if(' ' != data[i]) { break; } } if('-' == data[i]) { minus_flag = true; flag = true; } else if('+' == data[i]) { minus_flag = false; flag = true; } else if(('0' > data[i]) || ('9' < data[i])) { return 0; } if(flag) { j = i + 1; } else { j = i; } //ignore 0 till a non-zero digit character for(; j < s_size; j++) { if('0' != data[j]) { break; } } for(; j < s_size; j++) { if(('0' <= data[j]) && ('9' >= data[j])) { if (result > INT_MAX / 10 || (result == INT_MAX / 10 && data[j] - '0' > 7)) { if (!minus_flag) return INT_MAX; else return INT_MIN; } result = data[j] - '0' + result * 10; //cout << result <