前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题-python3 字符串消消乐,将字符串中相邻相同的字符一起消掉

面试题-python3 字符串消消乐,将字符串中相邻相同的字符一起消掉

作者头像
上海-悠悠
发布2021-04-26 09:58:15
3K0
发布2021-04-26 09:58:15
举报
文章被收录于专栏:从零开始学自动化测试

题目

字符串消消乐,将字符串中相邻相同的字符一起消掉,最后输出消除完成的字符串

示例:abcccbxezzzrf7788fn 输出:axern

说明:从左住右消除,第一趟消除相邻相同的“ccc”、“zzz”、“77”、“88”, 得到abbxerffn,第二趟消除相邻相同的“bb”、“ff”,得到axern, 不存在相邻相同字符,消除结束。

只删除2个相邻的字母

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

输入:”abbaca” 输出:”ca” 解释: 例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。 之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。

代码语言:javascript
复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

S = 'abbaca'
st = []

for i in S:
    if len(st) == 0:
        st.append(i)
    elif i == st[-1]:
        st.pop()
    else:
        st.append(i)
print("".join(st))

运行结果会得到:ca 如果只考虑相邻2个元素一样,这样消除是没问题的,如果考虑到相邻的3个元素一样也删除,就不能满足需求了 如 S = ‘abbbaca’

相邻相同的字符一起消掉

在前面的基础上加个判断,判断元素是否与上一个被消除的元素一样(相邻多个元素相同也删除)

代码语言:javascript
复制
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

a = "abcccbxezzzrf7788fn"
s = []
# 前一个被消除的元素
del_str = ''
for i in a:
    # 栈为空,直接添加入栈
    if len(s) == 0:
        s.append(i)
    else:
        # 判断i 与被前一个被消除的元素是都相等
        if i == del_str:
            # 如果相等不做处理
            continue
        # 判断 i 与栈顶元素是否相等
        elif i == s[-1]:
            # 弹出栈顶元素
            del_str = s.pop(-1)
        else:
            # 入栈
            s.append(i)
print("".join(s))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 只删除2个相邻的字母
  • 相邻相同的字符一起消掉
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档