Skip to content

Commit be40518

Browse files
committed
添加 1047. 删除字符串中的所有相邻重复项 双指针解法 javascript版本
1 parent d250132 commit be40518

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

problems/1047.删除字符串中的所有相邻重复项.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,9 @@ func removeDuplicates(s string) string {
250250

251251
javaScript:
252252

253+
法一:使用栈
254+
253255
```js
254-
/**
255-
* @param {string} s
256-
* @return {string}
257-
*/
258256
var removeDuplicates = function(s) {
259257
const stack = [];
260258
for(const x of s) {
@@ -267,6 +265,25 @@ var removeDuplicates = function(s) {
267265
};
268266
```
269267

268+
法二:双指针(模拟栈)
269+
270+
```js
271+
// 原地解法(双指针模拟栈)
272+
var removeDuplicates = function(s) {
273+
s = [...s];
274+
let top = -1; // 指向栈顶元素的下标
275+
for(let i = 0; i < s.length; i++) {
276+
if(top === -1 || s[top] !== s[i]) { // top === -1 即空栈
277+
s[++top] = s[i]; // 入栈
278+
} else {
279+
top--; // 推出栈
280+
}
281+
}
282+
s.length = top + 1; // 栈顶元素下标 + 1 为栈的长度
283+
return s.join('');
284+
};
285+
```
286+
270287
TypeScript:
271288

272289
```typescript

0 commit comments

Comments
 (0)