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..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 @@ -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 { + + +### 方法二:递归(一行代码) + + + +#### 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);