力扣 1544. 整理字符串

85 阅读1分钟

题目: leetcode-cn.com/problems/ma…

题目的意思就是 两个相邻的字母不能是 AaaA

思路

使用的思想

  • 对字符串遍历

  • 每次遍历都用栈顶元素当前元素比较

  • 如果不同相同大小写是相同的字母 (我这感人的语文理解......), 意思就是: AaaA

  • 满足条件则删除栈顶元素,当前元素不进栈

  • 不满足则当前元素进栈

最终 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')