【题目】给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
【示例】
输入:“abbaca”
输出:“ca”
【提示】
1、1<=S.length<=20000
2、S仅由小写英文字母组成
【答案】
function quchong(arr) {
var temp = ''
for (let i = 0; i < arr.length; i++) {
if (temp == arr[i]) {
arr.splice(i-1, 2)
quchong(arr)
} else {
temp = arr[i]
}
}
return arr
}
function func_quchong(s) {
var arr = s.split('')
return quchong(arr.join(''))
}
func_quchong('abbaca')
【官方答案】
var removeDuplicates = function(S) {
// 创建临时栈
let stock = [];
// 遍历字符串
for(let item of S){
// 相邻两者相等
if(stock[stock.length - 1] === item){
// 弹出栈顶
stock.pop();
}else{
// 压入栈
stock.push(item);
}
}
return stock.join("");
};
时间复杂度:O(n)O(n),遍历了一次 S 字符串。
空间复杂度:O(n)O(n),n 为存储字符的临时栈所需空间。
网友评论