LeetCode 8. String to Integer (atoi)(字符串)
LeetCode 8 String to Integer atoi字符串
问题描述解题思路参考代码
By ScarbScarb’s Blog
Tags: - Math - String
问题描述
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.
解题思路
这题要实现atoi,将字符串转换成数字。 有很多细节需要注意。 包括: 空格、正负号、正负号重复出现、溢出。
参考代码
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
class Solution {
public:
int myAtoi(string
str) {
int result =
0;
int sign =
1;
const
int n =
str.length();
int i =
0;
while (
str[i] ==
' ' && i < n) ++i;
if (
str[i] ==
'+')
++i;
else if (
str[i] ==
'-')
{
sign = -
1;
++i;
}
for (; i < n; ++i)
{
if (
str[i] <
'0' ||
str[i] >
'9')
break;
if (result > INT_MAX /
10|| (result == INT_MAX /
10 && (
str[i] -
'0') > INT_MAX %
10))
return sign == -
1 ? INT_MIN : INT_MAX;
result = result *
10 +
str[i] -
'0';
}
return sign * result;
}
};
int main()
{
string s1(
"2147483648");
Solution sl = Solution();
cout << sl.myAtoi(s1) << endl;
system(
"pause");
return 0;
}