消消乐游戏

在这里插入图片描述

代码解析

def getElimination(string):  
    stack = []  # 初始化一个空栈
    for word in string:  # 遍历字符串中的每个字符
        if stack and word == stack[-1]:  # 检查栈是否非空 且 当前字符与栈顶元素相同
            stack.pop()  # 弹出栈顶元素(相邻的字符消除)
        else:
            stack.append(word)  # 否则将当前字符添加到栈中
    return stack  # 返回栈中的元素

步骤解析

  1. 初始化栈

    • stack = [] 创建一个空列表来作为栈,用于存放还未消除的字符。
  2. 遍历字符串

    • for word in string: 通过循环遍历输入字符串中的每个字符(即 word)。
  3. 判断与弹出

    • if stack and word == stack[-1]:
      • 这里通过两部分条件进行判断:
        • stack 非空,表示栈中有元素。
        • word 等于 stack[-1](栈顶元素)时,说明当前字符和栈顶元素相同。
      • 如果满足条件,则执行 stack.pop(),从栈中移除栈顶元素。这相当于“消除”相邻的相同字符。
  4. 添加字符

    • else: stack.append(word)
      • 如果当前字符和栈顶元素不同,或者栈为空,则将当前字符 word 添加到栈中。
  5. 返回结果

    • return stack:最后返回栈中的元素,栈中只包含未被消除的字符。

输入 "mmbbC" 的处理过程

我们具体分析一下输入字符串 "mmbbC" 的处理过程:

  • 初始stack = []

  • 处理 m

    • 栈为空,添加 mstack = ['m']
  • 处理 m

    • stack 非空且当前 wordm)等于 stack[-1]m),弹出栈顶元素 → stack = []
  • 处理 b

    • 栈为空,添加 bstack = ['b']
  • 处理 b

    • stack 非空且当前 wordb)等于 stack[-1]b),弹出栈顶元素 → stack = []
  • 处理 C

    • 栈为空,添加 Cstack = ['C']

最终输出

经过上述步骤,输入 "mmbbC" 最终返回的栈是 ['C']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值