【华为OD机试题】字符串消消乐

全栈小5
全栈领域优质创作者
博客专家认证
2023-02-25 13:06:22

题目

字符串消消乐。相邻且相同的字符串可以消除,消除后字符继续消除,给你一串字符,给出最终的长度。字符串大小写敏感,有其他非字母字符返回0。
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。
之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

考擦知识点

主要考察的是递归算法

解题思路

使用递归算法,替换函数

实现代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-

# 定义一个方法
def clearSameStr(str):
    # 遍历字符移除相邻相同字符
    temp=''
    newStr=str
    for char in str:
        if char==temp:
            newStr=newStr.replace(temp+char,'')
            temp=''
            clearSameStr(newStr)
        else:
            temp=char
    
    # 判断新字符串是否还有相邻相同字母
    temp=''
    is_same=False
    for char in str:
        if char==temp:
            is_same=True
            break
        else:
            temp=char

    if is_same:
        return clearSameStr(newStr)
    else:
        return newStr

target_str='abbaca'
out_str=clearSameStr(target_str)
print(f'{out_str}')

img

...全文
98 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

443

社区成员

发帖
与我相关
我的任务
社区描述
欢迎加入【基础知识小馆】,本小馆主要展示和分享大家记录的基础知识!帮助别人,成长你我!C#、.net core、Python、Java,Sql Server、mysql、oracle、Go等
javac#c语言 个人社区 广东省·广州市
社区管理员
  • 全栈小5
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧