Skip to content

Commit bb698f4

Browse files
committed
feat: Add cpp solution to lc problem No.0008
1 parent aca2202 commit bb698f4

File tree

3 files changed

+83
-0
lines changed

3 files changed

+83
-0
lines changed

solution/0000-0099/0008.String to Integer (atoi)/README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,35 @@ class Solution {
356356
}
357357
```
358358

359+
#### C++
360+
```c++
361+
class Solution {
362+
public:
363+
int myAtoi(string s) {
364+
int i = 0, n = s.size();
365+
while (i < n && s[i] == ' ')
366+
++i;
367+
368+
int sign = 1;
369+
if (i < n && (s[i] == '-' || s[i] == '+')) {
370+
sign = s[i] == '-' ? -1 : 1;
371+
++i;
372+
}
373+
374+
int res = 0;
375+
while (i < n && isdigit(s[i])) {
376+
int digit = s[i] - '0';
377+
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) {
378+
return sign == 1 ? INT_MAX : INT_MIN;
379+
}
380+
res = res * 10 + digit;
381+
++i;
382+
}
383+
return res * sign;
384+
}
385+
};
386+
```
387+
359388
<!-- tabs:end -->
360389

361390
<!-- solution:end -->

solution/0000-0099/0008.String to Integer (atoi)/README_EN.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,35 @@ class Solution {
352352
}
353353
```
354354

355+
#### C++
356+
```c++
357+
class Solution {
358+
public:
359+
int myAtoi(string s) {
360+
int i = 0, n = s.size();
361+
while (i < n && s[i] == ' ')
362+
++i;
363+
364+
int sign = 1;
365+
if (i < n && (s[i] == '-' || s[i] == '+')) {
366+
sign = s[i] == '-' ? -1 : 1;
367+
++i;
368+
}
369+
370+
int res = 0;
371+
while (i < n && isdigit(s[i])) {
372+
int digit = s[i] - '0';
373+
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) {
374+
return sign == 1 ? INT_MAX : INT_MIN;
375+
}
376+
res = res * 10 + digit;
377+
++i;
378+
}
379+
return res * sign;
380+
}
381+
};
382+
```
383+
355384
<!-- tabs:end -->
356385

357386
<!-- solution:end -->
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public:
3+
int myAtoi(string s) {
4+
int i = 0, n = s.size();
5+
while (i < n && s[i] == ' ')
6+
++i;
7+
8+
int sign = 1;
9+
if (i < n && (s[i] == '-' || s[i] == '+')) {
10+
sign = s[i] == '-' ? -1 : 1;
11+
++i;
12+
}
13+
14+
int res = 0;
15+
while (i < n && isdigit(s[i])) {
16+
int digit = s[i] - '0';
17+
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) {
18+
return sign == 1 ? INT_MAX : INT_MIN;
19+
}
20+
res = res * 10 + digit;
21+
++i;
22+
}
23+
return res * sign;
24+
}
25+
};

0 commit comments

Comments
 (0)