0%

8. String to Integer (atoi)

8. String to Integer (atoi)

第一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class Solution
{
public:
int myAtoi(string s)
{
int sum = 0;
int positive = 1;
bool isEntered = false;
for (const auto &ch : s)
{
switch (ch)
{
case '+':
if (!isEntered)
{
positive = 1;
isEntered = true;
}
else
return positive * sum;
break;
case '-':
if (!isEntered)
{
positive = -1;
isEntered = true;
}
else
return positive * sum;
break;
default:
if (ch >= 48 && ch <= 57)
{
if (!isEntered)
isEntered = true;
int pop = ch - 48;
switch (positive)
{
case 1:
if (sum > INT_MAX / 10 || (sum == INT_MAX / 10 && pop > 7))
return INT_MAX;
break;
case -1:
if (-sum < INT_MIN / 10 || (-sum == INT_MIN / 10 && pop >= 8))
return INT_MIN;
break;
}
sum = sum * 10 + pop;
}
else if (ch != ' ')
{
return positive * sum;
}else if (ch == ' ' && isEntered)
{
return positive * sum;
}
}
}
return positive * sum;
}
};

坑有点多,起初忽视了很多种情况

其中判断是否溢出参考了https://leetcode.com/problems/reverse-integer/solution/