方法一 字符串转数组删除元素
将字符串转为数组,遍历数组,如果碰到同一字母大写小写连续出现就原地删除这两个元素,最后把数组转回字符串并返回
var makeGood = function(s) {
let arr=s.split('')
for(let i=0;i<s.length-1;i++){
if(arr[i]!=arr[i+1] && (arr[i].toLowerCase()===arr[i+1] || arr[i].toUpperCase()===arr[i+1])){
arr.splice(i,2)
if(i>2) i-=2
else i=-1
}
}
return arr.join('')
};
消耗时间和内存情况:
方法二 栈
维护一个栈,栈内没有元素则直接将字符放入栈中,如果下一个字符与栈顶元素能满足为同一字符的大小写则从栈中弹出元素,最后栈中剩下的元素就是满足题意的删除后的字符串
var makeGood = function(s) {
let res = [];
for(let i of s){
if(
res.length &&
res[res.length - 1] !== i &&
res[res.length - 1].toUpperCase() === i.toUpperCase()
){
res.pop();
}else{
res.push(i);
}
}
return res.join("");
};
消耗时间和内存情况: