File tree Expand file tree Collapse file tree 3 files changed +83
-0
lines changed
solution/0000-0099/0008.String to Integer (atoi) Expand file tree Collapse file tree 3 files changed +83
-0
lines changed Original file line number Diff line number Diff line change @@ -356,6 +356,35 @@ class Solution {
356
356
}
357
357
```
358
358
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
+
359
388
<!-- tabs:end -->
360
389
361
390
<!-- solution:end -->
Original file line number Diff line number Diff line change @@ -352,6 +352,35 @@ class Solution {
352
352
}
353
353
```
354
354
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
+
355
384
<!-- tabs:end -->
356
385
357
386
<!-- solution:end -->
Original file line number Diff line number Diff line change
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
+ };
You can’t perform that action at this time.
0 commit comments