Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
Update (2015-02-10):
The signature of the C++
function had been updated. If you still see your function signature
accepts a const char *
argument, please click the reload button to
reset your code definition.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
class Solution {
public:
int myAtoi(string str) {
int i = 0;
int flag = 1;
const int MAXX = 0x7fffffff;
for (i = 0; i < str.length(); ++i)
{
if(str[i] == '-') {
flag = -1;
i = i+1;
break;
}
if(str[i]=='+') {
flag = 1;
i = i+1;
break;
}
if(str[i] != ' ') break;
}
int sum = 0, overflow=0;
for (; i < str.length(); ++i)
{
if(str[i] >= '0' && str[i] <= '9') {
if(MAXX/10 < sum) {
sum = MAXX;
overflow = 1;
break;
}
sum = sum*10+str[i]-'0';
if(sum < 0) {
sum = MAXX;
overflow = 1;
break;
}
} else {
break;
}
}
if(overflow) {
if(flag==1) return sum;
else if(flag==-1) return sum+1;
} else {
return flag*sum;
}
}
};