1047. 删除字符串中的所有相邻重复项
方法一:栈(使用栈)
/**
* @param {string} s
* @return {string}
*/
var removeDuplicates = function(s) {
const result = [];
for (const i of s) {
if (i === result[result.length - 1]) {
result.pop();
} else {
result.push(i);
}
}
return result.join('');
};
方法二:双指针(模拟栈)
/**
* @param {string} s
* @return {string}
*/
var removeDuplicates = function(s) {
s = [...s];
let top = -1; // 指向栈顶元素的下标
for(let i = 0; i < s.length; i++) { // top === -1 即空栈
if (top === -1 || s[top] !== s[i]) {
s[++top] = s[i]; // 入栈
} else {
top--; // 退出栈
}
}
s.length = top + 1; // 栈顶元素下标 + 1 为栈的的长度
return s.join('');
};