华为OD机试 - 字母消消乐(Python)| 真题+思路+代码

本文介绍了华为OD机试中的一道字母消消乐题目,详细阐述了游戏规则和解题思路。通过Python代码实现字母消除逻辑,最终输出游戏结束后字符串的长度。示例展示了不同输入情况下如何进行消除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OD统一机试:字母消消乐

题目

游戏规则:
输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。
在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。
输出最终得到的字符串长度。

输入

输入原始字符串 str
只能包含大小写英文字母,字母的大小写敏感,str 长度不超过 100

输出

输出游戏结束后,最终得到的字符串长度

示例一

输入

gg

输出

0

说明

gg 可以直接消除,得到空串,长度为 0

示例二

输入

mMbccbc

输出

3

说明

mMbccbc 中 可以先消除 cc 此时变为mMbbc
再消除,bb,此时变成 mMc
此时没有相同且相邻的字符 无法继续消除
最终得到字符串 mMc,长度为 3

备注

输入中包含非大小写英文字母时
均为异常输入
直接返回 0

解题思路

参考代码实现:

  • 定义函数 solve_method() ,该函数处理字符串 m_str
  • 判断字符串是否为空,如果为空,则返回 0 。
  • 使用 filter() 函数过滤字符串中的非字母字符,并将剩下的字母连接为一个新字符串 only_letters
  • 如果新字符串长度为 0 ,则返回 0 。
  • 将新字符串转换为列表 linked_list 。
  • 使用循环枚举列表中的元素,当连续两个元素相同时,删除这两个元素。
  • 返回列表的长度。

核心知识点

简易代码,无难度

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值