刷LeetCode(8)——String to Integer (atoi)
Code it now! https://leetcode.com/problems/string-to-integer-atoi/description/
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.
实现如下:这题也比较好做,关键是要考虑挺多东西,我也是提交了好多次才发现有这么多要考虑的地方
如下:
开头的空格
正负符号的处理
溢出处理
非法输入
#include <iostream>
#include <string>
#include <limits.h>
#include <assert.h>
using namespace std;
class Solution {
public:
int myAtoi(string& str) {
int i = 0,sign = 1;
long long ret = 0;
const int len = str.length();
if( !len )
{
return 0;
}
while( i < len && isspace( str.at(i) ) )
{
i++;
}
while( i < len )
{
if( str.at(i) == '+' )
{
i++;
sign = 1;
continue;
}
if( str.at(i) == '-' )
{
i++;
sign = -1;
continue;
}
if( str.at(i) < '0' || str.at(i) > '9' )
{
return 0;
}
ret = ret*10 + sign*(str.at(i++) - '0');
}
if( ret > INT_MAX || ret < INT_MIN ){
return 0;
}
return ret;
}
};
int main()
{
string str;
while( getline(cin,str) && !str.empty() )
{
cout << Solution().myAtoi(str) << endl;
}
return 0;
}