原题地址(中等)

和第7题差不多

代码

  1. class Solution {
  2. public:
  3. int myAtoi(string s) {
  4. if(s.size() == 0) return 0;
  5. int i = 0, begin, end, flag = 1;
  6. while(s[i] == ' ') i++; // 去空白符
  7. if(s[i] == '+' || s[i] == '-' || isdigit(s[i])){ //记下数字的正负
  8. if(s[i] == '-') flag = -1;
  9. if(!isdigit(s[i])) i++;
  10. }
  11. else return 0;
  12. if(isdigit(s[i])){ // 开始存数
  13. int ans = 0;
  14. while(isdigit(s[i])){
  15. if(ans < INT_MIN / 10 || (ans == INT_MIN/10 && s[i] > '8'))
  16. return INT_MIN;
  17. else if( ans > INT_MAX/10 || (ans == INT_MAX/10 && s[i]>'7') )
  18. return INT_MAX;
  19. else
  20. ans = ans*10 + flag*(s[i]-'0');
  21. i++;
  22. }
  23. return ans;
  24. }
  25. return 0;
  26. }
  27. };