From 32c7d13b807d3b609d6a2501ff6d6600d3735d8c Mon Sep 17 00:00:00 2001 From: rain84 Date: Mon, 7 Oct 2024 16:41:15 +0300 Subject: [PATCH 1/2] feat: add solutions to lc problem: No.2696 --- .../README.md | 46 +++++++++++++++++-- .../README_EN.md | 46 +++++++++++++++++-- .../Solution.js | 11 +++++ .../Solution.ts | 8 ++-- .../Solution2.js | 2 + .../Solution2.ts | 2 + 6 files changed, 102 insertions(+), 13 deletions(-) create mode 100644 solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.js create mode 100644 solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.js create mode 100644 solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.ts diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md index 8c645a32a26b7..a67321937def6 100644 --- a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md @@ -149,17 +149,31 @@ func minLength(s string) int { ```ts function minLength(s: string): number { - const stk: string[] = ['']; + const stk: string[] = []; for (const c of s) { - if (c === 'B' && stk.at(-1)! === 'A') { + if ((stk.at(-1) === 'A' && c === 'B') || (stk.at(-1) === 'C' && c === 'D')) { stk.pop(); - } else if (c === 'D' && stk.at(-1)! === 'C') { + } else { + stk.push(c); + } + } + return stk.length; +} +``` + +#### JavaScript + +```js +function minLength(s) { + const stk = []; + for (const c of s) { + if ((stk.at(-1) === 'A' && c === 'B') || (stk.at(-1) === 'C' && c === 'D')) { stk.pop(); } else { stk.push(c); } } - return stk.length - 1; + return stk.length; } ``` @@ -193,4 +207,28 @@ impl Solution { + + +### Solution 2: One-liner + + + +#### TypeScript + +```ts +const minLength = (s: string, n = s.length): number => + ((s = s.replace(/AB|CD/g, '')), s.length === n) ? n : minLength(s); +``` + +#### JavaScript + +```js +const minLength = (s, n = s.length) => + ((s = s.replace(/AB|CD/g, '')), s.length === n) ? n : minLength(s); +``` + + + + + diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README_EN.md b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README_EN.md index cd8e37d1d4110..e9bcfe4c2a99b 100644 --- a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README_EN.md +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README_EN.md @@ -147,17 +147,31 @@ func minLength(s string) int { ```ts function minLength(s: string): number { - const stk: string[] = ['']; + const stk: string[] = []; for (const c of s) { - if (c === 'B' && stk.at(-1)! === 'A') { + if ((stk.at(-1) === 'A' && c === 'B') || (stk.at(-1) === 'C' && c === 'D')) { stk.pop(); - } else if (c === 'D' && stk.at(-1)! === 'C') { + } else { + stk.push(c); + } + } + return stk.length; +} +``` + +#### JavaScript + +```js +function minLength(s) { + const stk = []; + for (const c of s) { + if ((stk.at(-1) === 'A' && c === 'B') || (stk.at(-1) === 'C' && c === 'D')) { stk.pop(); } else { stk.push(c); } } - return stk.length - 1; + return stk.length; } ``` @@ -191,4 +205,28 @@ impl Solution { + + +### Solution 2: One-liner + + + +#### TypeScript + +```ts +const minLength = (s: string, n = s.length): number => + ((s = s.replace(/AB|CD/g, '')), s.length === n) ? n : minLength(s); +``` + +#### JavaScript + +```js +const minLength = (s, n = s.length) => + ((s = s.replace(/AB|CD/g, '')), s.length === n) ? n : minLength(s); +``` + + + + + diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.js b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.js new file mode 100644 index 0000000000000..1adb110a2b9b1 --- /dev/null +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.js @@ -0,0 +1,11 @@ +function minLength(s) { + const stk = []; + for (const c of s) { + if ((stk.at(-1) === 'A' && c === 'B') || (stk.at(-1) === 'C' && c === 'D')) { + stk.pop(); + } else { + stk.push(c); + } + } + return stk.length; +} diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.ts b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.ts index 0828f838631a7..df662987b2bc0 100644 --- a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.ts +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution.ts @@ -1,13 +1,11 @@ function minLength(s: string): number { - const stk: string[] = ['']; + const stk: string[] = []; for (const c of s) { - if (c === 'B' && stk.at(-1)! === 'A') { - stk.pop(); - } else if (c === 'D' && stk.at(-1)! === 'C') { + if ((stk.at(-1) === 'A' && c === 'B') || (stk.at(-1) === 'C' && c === 'D')) { stk.pop(); } else { stk.push(c); } } - return stk.length - 1; + return stk.length; } diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.js b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.js new file mode 100644 index 0000000000000..73aa53397c2a2 --- /dev/null +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.js @@ -0,0 +1,2 @@ +const minLength = (s, n = s.length) => + ((s = s.replace(/AB|CD/g, '')), s.length === n) ? n : minLength(s); diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.ts b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.ts new file mode 100644 index 0000000000000..64c440819ffdf --- /dev/null +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/Solution2.ts @@ -0,0 +1,2 @@ +const minLength = (s: string, n = s.length): number => + ((s = s.replace(/AB|CD/g, '')), s.length === n) ? n : minLength(s); From a59480aef8481e11b94bb30888c959a942bb279b Mon Sep 17 00:00:00 2001 From: Libin YANG Date: Tue, 8 Oct 2024 08:42:18 +0800 Subject: [PATCH 2/2] Update README.md --- .../README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md index a67321937def6..2359690a417e3 100644 --- a/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md +++ b/solution/2600-2699/2696.Minimum String Length After Removing Substrings/README.md @@ -209,7 +209,7 @@ impl Solution { -### Solution 2: One-liner +### 方法二:递归(一行代码)