for Robot Artificial Inteligence

17. String to Integer (atoi)

|

class Solution {
public:
    int myAtoi(string str) {
        int result = 0;
        if(str[0]>=65)
            return 0;
        result = stoi(str);
        if(result>=INT_MAX) return INT_MAX;
        if(result<=INT_MIN) return INT_MIN;
        return result;
    }
};
  • discards all leading whitespaces
  • indicator(-1 or 1)
  • overflow
  • invalid input
class Solution {
public:
    int myAtoi(string str) {
        int indicator = 1, base = 0, i = 0;
        cout<<str[0] - '0';
        while(str[i]==' '){i++;}
        if(str[i] == '-' || str[i]=='+')
        {
            indicator = 1 - 2*(str[i++]=='-'); // 만약 트루면 1-2=-1, 아니면 1-0 =1
        }
        while(str[i]>='0' && str[i] <= '9')// 범위 0~9(여기선 아직 character 데이터 유형)
        {
            if(base>INT_MAX/10 || (base==INT_MAX/10 && str[i]-'0'>7)) // str[i]-'0', 즉 integer로 바꾸눈 문구. 7보다 커야한다.
            {
                if(indicator == 1) return INT_MAX;
                else return INT_MIN;
            }
            base = 10*base + (str[i++]-'0');
        }
        return base*indicator;

    }
};

  • str[i] - ‘0’ 뒤에 ‘0’ 붙이는 거 자채가 character값을 integer 값으로 바꾸는 것이다.

Comments