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 。
- 使用循环枚举列表中的元素,当连续两个元素相同时,删除这两个元素。
- 返回列表的长度。
核心知识点
简易代码,无难度