题目: leetcode-cn.com/problems/ma…
题目的意思就是 两个相邻的字母不能是 Aa
或 aA
思路
使用栈
的思想
-
对字符串遍历
-
每次遍历都用
栈顶元素
与当前元素
比较 -
如果
不同相同大小写
且是相同的字母
(我这感人的语文理解......), 意思就是:Aa
或aA
-
满足条件则删除栈顶元素,当前元素不进栈
-
不满足则当前元素进栈
最终 stack
就是结果
var makeGood = function(s) {
function isDifferent(x, y) {
if (isEqual(x, y) && x !== y) return true
else return false
}
function isEqual(a = '', b = '') {
return a.toLowerCase() === b.toLowerCase()
}
let stack = []
for (let v of s) {
// 关键判断
if (isDifferent(stack[stack.length - 1], v)) stack.pop() // 删除栈顶元素
else stack.push(v) // 当前元素进栈
}
return stack.join('')
}
makeGood('leEeetcode')