From bb698f4008de6fc3094a3eca96e42c302cbac77a Mon Sep 17 00:00:00 2001 From: Gagan Saini Date: Tue, 27 May 2025 13:47:39 +0530 Subject: [PATCH 1/5] feat: Add cpp solution to lc problem No.0008 --- .../0008.String to Integer (atoi)/README.md | 29 +++++++++++++++++++ .../README_EN.md | 29 +++++++++++++++++++ .../Solution.cpp | 25 ++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index a1c189c4a6ce7..b993b300acafd 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -356,6 +356,35 @@ class Solution { } ``` +#### C++ +```c++ +class Solution { +public: + int myAtoi(string s) { + int i = 0, n = s.size(); + while (i < n && s[i] == ' ') + ++i; + + int sign = 1; + if (i < n && (s[i] == '-' || s[i] == '+')) { + sign = s[i] == '-' ? -1 : 1; + ++i; + } + + int res = 0; + while (i < n && isdigit(s[i])) { + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; + } + res = res * 10 + digit; + ++i; + } + return res * sign; + } +}; +``` + diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index 7603001843b45..10b8018641d97 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -352,6 +352,35 @@ class Solution { } ``` +#### C++ +```c++ +class Solution { +public: + int myAtoi(string s) { + int i = 0, n = s.size(); + while (i < n && s[i] == ' ') + ++i; + + int sign = 1; + if (i < n && (s[i] == '-' || s[i] == '+')) { + sign = s[i] == '-' ? -1 : 1; + ++i; + } + + int res = 0; + while (i < n && isdigit(s[i])) { + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; + } + res = res * 10 + digit; + ++i; + } + return res * sign; + } +}; +``` + diff --git a/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp b/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp new file mode 100644 index 0000000000000..3ff29ca9acd32 --- /dev/null +++ b/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp @@ -0,0 +1,25 @@ +class Solution { +public: + int myAtoi(string s) { + int i = 0, n = s.size(); + while (i < n && s[i] == ' ') + ++i; + + int sign = 1; + if (i < n && (s[i] == '-' || s[i] == '+')) { + sign = s[i] == '-' ? -1 : 1; + ++i; + } + + int res = 0; + while (i < n && isdigit(s[i])) { + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; + } + res = res * 10 + digit; + ++i; + } + return res * sign; + } +}; From 04cfcf31d544e0989ed62089b17e03ec3b2d7922 Mon Sep 17 00:00:00 2001 From: gaganxsaini <32135369+gaganxsaini@users.noreply.github.com> Date: Tue, 27 May 2025 08:19:17 +0000 Subject: [PATCH 2/5] style: format code and docs with prettier --- solution/0000-0099/0008.String to Integer (atoi)/README.md | 3 ++- solution/0000-0099/0008.String to Integer (atoi)/README_EN.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index b993b300acafd..f79a94b07c83d 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -357,6 +357,7 @@ class Solution { ``` #### C++ + ```c++ class Solution { public: @@ -364,7 +365,7 @@ public: int i = 0, n = s.size(); while (i < n && s[i] == ' ') ++i; - + int sign = 1; if (i < n && (s[i] == '-' || s[i] == '+')) { sign = s[i] == '-' ? -1 : 1; diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index 10b8018641d97..bccdae83e50f9 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -353,6 +353,7 @@ class Solution { ``` #### C++ + ```c++ class Solution { public: @@ -360,7 +361,7 @@ public: int i = 0, n = s.size(); while (i < n && s[i] == ' ') ++i; - + int sign = 1; if (i < n && (s[i] == '-' || s[i] == '+')) { sign = s[i] == '-' ? -1 : 1; From 34da9daca70aedf60db18d1a7fa154d9652410b0 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 28 May 2025 06:29:43 +0800 Subject: [PATCH 3/5] Update README.md --- .../0008.String to Integer (atoi)/README.md | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README.md b/solution/0000-0099/0008.String to Integer (atoi)/README.md index f79a94b07c83d..87634a3e1f38a 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README.md @@ -214,6 +214,36 @@ class Solution { } ``` +#### C++ + +```cpp +class Solution { +public: + int myAtoi(string s) { + int i = 0, n = s.size(); + while (i < n && s[i] == ' ') + ++i; + + int sign = 1; + if (i < n && (s[i] == '-' || s[i] == '+')) { + sign = s[i] == '-' ? -1 : 1; + ++i; + } + + int res = 0; + while (i < n && isdigit(s[i])) { + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; + } + res = res * 10 + digit; + ++i; + } + return res * sign; + } +}; +``` + #### Go ```go @@ -356,36 +386,6 @@ class Solution { } ``` -#### C++ - -```c++ -class Solution { -public: - int myAtoi(string s) { - int i = 0, n = s.size(); - while (i < n && s[i] == ' ') - ++i; - - int sign = 1; - if (i < n && (s[i] == '-' || s[i] == '+')) { - sign = s[i] == '-' ? -1 : 1; - ++i; - } - - int res = 0; - while (i < n && isdigit(s[i])) { - int digit = s[i] - '0'; - if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { - return sign == 1 ? INT_MAX : INT_MIN; - } - res = res * 10 + digit; - ++i; - } - return res * sign; - } -}; -``` - From 10d997c6201a92537383fc5015b3f5d0b02bdf57 Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 28 May 2025 06:30:48 +0800 Subject: [PATCH 4/5] Update README_EN.md --- .../README_EN.md | 68 ++++++++----------- 1 file changed, 30 insertions(+), 38 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md index bccdae83e50f9..05ee6458e6711 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md +++ b/solution/0000-0099/0008.String to Integer (atoi)/README_EN.md @@ -160,7 +160,6 @@ class Solution: i = 0 while s[i] == ' ': i += 1 - # 仅包含空格 if i == n: return 0 sign = -1 if s[i] == '-' else 1 @@ -168,11 +167,9 @@ class Solution: i += 1 res, flag = 0, (2**31 - 1) // 10 while i < n: - # 非数字,跳出循环体 if not s[i].isdigit(): break c = int(s[i]) - # 溢出判断 if res > flag or (res == flag and c > 7): return 2**31 - 1 if sign > 0 else -(2**31) res = res * 10 + c @@ -190,7 +187,6 @@ class Solution { if (n == 0) return 0; int i = 0; while (s.charAt(i) == ' ') { - // 仅包含空格 if (++i == n) return 0; } int sign = 1; @@ -198,9 +194,7 @@ class Solution { if (s.charAt(i) == '-' || s.charAt(i) == '+') ++i; int res = 0, flag = Integer.MAX_VALUE / 10; for (; i < n; ++i) { - // 非数字,跳出循环体 if (s.charAt(i) < '0' || s.charAt(i) > '9') break; - // 溢出判断 if (res > flag || (res == flag && s.charAt(i) > '7')) return sign > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE; res = res * 10 + (s.charAt(i) - '0'); @@ -210,6 +204,36 @@ class Solution { } ``` +#### C++ + +```cpp +class Solution { +public: + int myAtoi(string s) { + int i = 0, n = s.size(); + while (i < n && s[i] == ' ') + ++i; + + int sign = 1; + if (i < n && (s[i] == '-' || s[i] == '+')) { + sign = s[i] == '-' ? -1 : 1; + ++i; + } + + int res = 0; + while (i < n && isdigit(s[i])) { + int digit = s[i] - '0'; + if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { + return sign == 1 ? INT_MAX : INT_MIN; + } + res = res * 10 + digit; + ++i; + } + return res * sign; + } +}; +``` + #### Go ```go @@ -282,8 +306,6 @@ const myAtoi = function (str) { #### C# ```cs -// https://leetcode.com/problems/string-to-integer-atoi/ - public partial class Solution { public int MyAtoi(string str) @@ -352,36 +374,6 @@ class Solution { } ``` -#### C++ - -```c++ -class Solution { -public: - int myAtoi(string s) { - int i = 0, n = s.size(); - while (i < n && s[i] == ' ') - ++i; - - int sign = 1; - if (i < n && (s[i] == '-' || s[i] == '+')) { - sign = s[i] == '-' ? -1 : 1; - ++i; - } - - int res = 0; - while (i < n && isdigit(s[i])) { - int digit = s[i] - '0'; - if (res > INT_MAX / 10 || (res == INT_MAX / 10 && digit > INT_MAX % 10)) { - return sign == 1 ? INT_MAX : INT_MIN; - } - res = res * 10 + digit; - ++i; - } - return res * sign; - } -}; -``` - From b997f3d19148a7752b5201938d53dcd774d4a76e Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Wed, 28 May 2025 06:32:26 +0800 Subject: [PATCH 5/5] Update Solution.cpp --- solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp b/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp index 3ff29ca9acd32..72fc381920bf2 100644 --- a/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp +++ b/solution/0000-0099/0008.String to Integer (atoi)/Solution.cpp @@ -1,10 +1,10 @@ -class Solution { +class Solution { public: int myAtoi(string s) { int i = 0, n = s.size(); while (i < n && s[i] == ' ') ++i; - + int sign = 1; if (i < n && (s[i] == '-' || s[i] == '+')) { sign = s[i] == '-' ? -1 : 1;