17. String to Integer (atoi)
02 Jul 2020 | Daily Algorithms
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 값으로 바꾸는 것이다.
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