您的位置:首页 > 其它

leetcode: string to integer (atoi)

2015-03-11 16:00 357 查看
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.

spoilers alert... click to show requirements for atoi.

C++中的long long 和 _int64 的用法和说明:http://www.360doc.com/content/10/0407/18/59141_21980461.shtml

#include<iostream>
#include<string>
using namespace std;
class Solution {
public:
int atoi(string str) {
/* https://msdn.microsoft.com/zh-cn/library/4kh09110 * question: 为什么就不能定义,int min = -214783648 呢,
* 用这个取代(-1)*(max + 1) 为什么就不行呢?????
*/
if (str == "" || str.length() < 1)
return 0;
int max = 2147483647;
long long sum = 0;
int flag = 1;
int i = 0, j = 0;
while (i < str.length())
{
if (str[i] == ' ')
i++;
else
break;
}
if (str[i] == '-' || str[i] == '+')
{
if (str[i] == '-')
flag = -1;
i++;
}

cout << flag << endl;
for (j = i; j < str.length(); j++)
{
if (str[j] >= '0' && str[j] <= '9')
{
sum = sum * 10 + (str[j] - '0');
if (flag*sum > max)
{
return max;
}
if (sum*flag < (-1)*(max + 1))
{
return (-1)*(max + 1);
}

}
else
{
break;
}
}
if (flag == -1)
{
sum = sum*(-1);
}
return sum;
}
};
void main()
{
string str = "2147483648";
Solution s;
long long n = s.atoi(str);
cout << n << endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息