问题描述:

给定一个输入字符串,字符串只可能由英文字母('a'~'z'、'A'~'Z') 和左右小括号('('、')')组成。当字符串里存在小括号时,小括号是成对的,可以有一个或多个小括号对,小括号对不会嵌套,小括号对内可以包含1个或多个英文字母,也可以不包含英文字母。当小括号对内包含多个英文字母时,这些字母之间是相互等效的关系,而且等效关系可以在不同的小括号对之间传递,即当存在'a'和'b'等效和存在'b'和'c'等效时,'a'和'c'也等效,另外,同一个英文字母的大写字母和小写字母也相互等效(即使它们分布在不同的括号对里)

需要对这个输入字符串做简化,输出一个新的字符串,
输出字符串里只需保留输入字符串里的没有被小括号对包含的字符(按照输入字符串里的字符顺序),并将每个字符替换为在小括号对里包含的且字典序最小的等效字符。
如果简化后的字符串为空,请输出为"0"。
示例:
输入字符串为"never(dont)give(run)up(f)()",初始等效字符集合为('d'. 'o'. 'n'. 't')、 ('r'. 'u','n'),由于等效关系可以传递,因此最终等效字符集合为('d', 'o', 'n', 't', 'r', 'u'),将输入字符串里的剩余部分按字典序最小的等效字符替换后得到"devedgivedp"
输入描述
input_string
输入为1行,代表输入字符串
输出描述
output_string
输出为1行,代表输出字符串
补充说明
输入字符串的长度在1~100000之间

()happy(xyz)new(wxy)year(t)
happwnewwear
#说明:等效字符集为('x’, 'y','z’,'w'),输入字符串里没有被小括号包含的子字符串集合为"happynewyear",将其中字符替换为字典序最小的等效字符后输出为:"happwnewwear"
()abcdefgAC(a)(Ab)(C)
AAcdefgAC
#说明:等效字符集为('a', 'A', 'b'),输入字符串里没有被小括号包含的子字符串集合为"abcdefgAC",将其中字符替换为字典序最小的等效字符后输出为:“AAcdefgAC"

解题思路:

根据规则:

  1. 小括号内多个英文字母,这几个英文字母等效
  2. 多个小括号内英文字母的等效关系可以传递
  3. 同一个英文字母的大小写等效

情况判断:

进入小括号内部:

  1. 使用一个set()集合记录等效字母集
  2. 多个英文字母:直接将这几个英文字母加入集合
  3. 一个英文字母:先将这个英文字母加入另一个set()集合,待字符串处理完成时,判断该字母对应的大(小)写字母是否存在于第一个set()集合中,是则加入第一个set()。

或者在小括号外部:

  1. 使用一个list记录不在小括号内的字母
  2. 将等效字母集排序,取第一个(或者set()为空,则是空)
  3. 遍历list,若当前字母在set()中,将当前字母替换为最小等效字母

代码实现:

s = list(input())
s1 = set()#记录小括号内多个英文字母
s2 = set()#记录小括号内单个英文字母
ans = []
i = 0
#处理字符串
while i < len(s):if s[i] == '(':#进入小括号内部i += 1right = iwhile s[right] != ')':right += 1if right-i > 1:#多个for i in range(i,right):s1.add(s[i])elif right-i == 1:#单个s2.add(s[i])i = right+1else:#小括号外部while i < len(s) and s[i] != '(':ans.append(s[i])i += 1  if i == len(s):break
#判断s2中对应的字母大小写是否在s1中
for x in list(s2):if 'a' <= x <= 'z' and x.upper() in s1:s1.add(x)elif 'A' <= x <= 'Z' and x.lower() in s1:s1.add(x)   
k = ''#最小等效字母
s1 = sorted(s1)
if s1:k = s1[0]
for i in range(len(ans)):if ans[i] in s1:ans[i] = k#替换
print(''.join(ans))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85885.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85885.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85885.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用sealos安装k8s

一、准备工作&#xff08;所有节点需执行&#xff09;​ 1、系统要求 操作系统&#xff1a;本文为Ubuntu 20.0.4 配置&#xff1a;不同主机名、时间同步、SSH 免密互通、关闭防火墙/SELinux/swap。 资源&#xff1a;建议 ≥2核 CPU、2GB 内存&#xff08;生产环境需更高&am…

Pytorch 实战四 VGG 网络训练

系列文章目录 文章目录 系列文章目录前言一、源码1. 解决线程冲突2.代码框架 二、代码详细介绍1.基础定义2. epoch 的定义3. 每组图片的训练和模型保存 前言 前面我们已经完成了数据集的制作&#xff0c;VGG 网络的搭建&#xff0c;现在进行网络模型的训练。 一、源码 import t…

课程专注度分析系统文档

一、项目概述 本项目基于 Flask 框架开发&#xff0c;结合计算机视觉技术&#xff08;利用 YOLOv10 等模型 &#xff09;&#xff0c;实现对课堂视频的智能分析。可检测视频中学生手机使用情况、面部表情&#xff08;专注、分心等 &#xff09;&#xff0c;统计专注度、手机使…

中国设计 全球审美 | 安贝斯新产品发布会:以东方美学开辟控制台仿生智造新纪元

6月17日&#xff0c;安贝斯&#xff08;武汉&#xff09;控制技术有限公司&#xff08;以下简称“安贝斯”&#xff09;在武汉隆重举行“新产品发布暨协会联合创新峰会”。近百位来自政府机构、行业协会、行业用户及战略合作伙伴的嘉宾齐聚现场&#xff0c;共同见证以“中国设计…

在微信小程序wxml文件调用函数实现时间转换---使用wxs模块实现

1. 创建 WXS 模块文件&#xff08;推荐单独存放&#xff09; 在项目目录下新建 utils.wxs 文件&#xff0c;编写时间转换逻辑&#xff1a; // utils.wxs module.exports {// 将毫秒转换为分钟&#xff08;保留1位小数&#xff09;convertToMinutes: function(ms) {if (typeo…

ByteMD 插件系统详解

ByteMD 插件系统详解 ByteMD 的插件系统是其强大扩展性的核心。它允许开发者在 Markdown 解析、AST 转换、HTML 渲染、以及编辑器 UI 交互的各个阶段注入自定义逻辑。这得益于 ByteMD 深度集成了 unified 处理器和其丰富的生态系统&#xff08;remark 用于 Markdown&#xff0c…

每日一练之 Lua 表

Lua 的 table 是什么数据结构&#xff1f;如何创建和访问&#xff1f; 数据结构:Lua的table是一种哈希表&#xff0c;使用键值对存储数据&#xff0c;支持动态扩容 创建方式: local t1 {} local t2 {10,20,30} local t3 {name"Alice",age25}访问方式&#xff1a…

实现自动胡批量抓取唯品会商品详情数据的途径分享(官方API、网页爬虫)

在电商领域&#xff0c;数据就是企业的核心资产。无论是市场分析、竞品研究&#xff0c;还是精准营销&#xff0c;都离不开对大量商品详情数据的深入挖掘。唯品会作为知名的电商平台&#xff0c;其丰富的商品信息对于众多从业者而言极具价值。本文将详细探讨实现自动批量抓取唯…

Zephyr 高阶实践:彻底讲透 west 构建系统、模块管理与跨平台 CI/CD 配置

本文是 Zephyr 项目管理体系的高阶解构与实战指南&#xff0c;全面覆盖 west 构建系统原理、模块解耦与 west.yml 多模块维护机制&#xff0c;结合企业级多平台 CI/CD 落地流程&#xff0c;深入讲解如何构建可靠、可维护、跨芯片架构的一体化 Zephyr 工程。 一、为什么 Zephyr …

我开源了一套springboot3快速开发模板

我开源了一套springboot3快速开发模板 开箱即用、按需组合、可快速二次开发的后端通用模板。 ✨ 主要特性 Spring Boot 3.x Java 17&#xff1a;跟随 Spring 最新生态&#xff0c;利用现代语法特性。多模块分层&#xff1a;common 抽象通用能力、starter 负责启动、modules…

OpenCV CUDA模块设备层-----在GPU上计算两个uchar1类型像素值的反正切(arctangent)比值函数atan2()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 对输入的两个 uchar1 像素值 a 和 b&#xff0c;先分别归一化到 [0.0, 1.0] 浮点区间&#xff0c;然后计算它们的 四象限反正切函数。 函数原型…

从C++编程入手设计模式——观察者模式

从C编程入手设计模式——观察者模式 ​ 观察者模式简直就是字如其名&#xff0c;观察观察&#xff0c;观察到了告诉别人。观察手的作用如此&#xff0c;观察者模式的工作机制也是如此。这个模式的核心思路是&#xff1a;一个对象的状态发生变化时&#xff0c;自动通知依赖它的…

MITM 中间人攻击

​据Akamai 2023网络安全报告显示&#xff0c;MITM攻击在数据泄露事件中占比达32.7%&#xff0c;平均每次事件造成企业损失$380,000​ ​NIST研究指出&#xff1a;2022-2023年高级MITM攻击增长41%&#xff0c;近70%针对金融和医疗行业​ 一、MITM攻击核心原理与技术演进 1. 中…

llama_index chromadb实现RAG的简单应用

此demo是自己提的一个需求&#xff1a;用modelscope下载的本地大模型实现RAG应用。毕竟大模型本地化有利于微调&#xff0c;RAG使内容更有依据。 为什么要用RAG&#xff1f; 由于大模型存在一定的局限性&#xff1a;知识时效性不足、专业领域覆盖有限以及生成结果易出现“幻觉…

TDMQ CKafka 版事务:分布式环境下的消息一致性保障

解锁 CKafka 事务能力的神秘面纱 在当今数字化浪潮下&#xff0c;分布式系统已成为支撑海量数据处理和高并发业务的中流砥柱。但在这看似坚不可摧的架构背后&#xff0c;数据一致性问题却如影随形&#xff0c;时刻考验着系统的稳定性与可靠性。 CKafka 作为分布式流处理平台的…

常见的负载均衡算法

常见的负载均衡算法 在实现水平扩展过程中&#xff0c;负载均衡算法是决定请求如何在多个服务实例间分配的核心逻辑。一个合理的负载均衡策略能够有效分散系统压力&#xff0c;提升系统吞吐能力与稳定性。 负载均衡算法可部署在多种层级中&#xff0c;如七层HTTP反向代理&…

数据结构转换与离散点生成

在 C 开发中&#xff0c;我们常常需要在不同的数据结构之间进行转换&#xff0c;以满足特定库或框架的要求。本文将探讨如何将 std::vector<gp_Pnt> 转换为 QVector<QPointF>&#xff0c;并生成特定范围内的二维离散点。 生成二维离散点 我们首先需要生成一系列…

零基础学习Redis(12) -- Java连接redis服务器

在我们之前的内容中&#xff0c;我们会发现通过命令行操作redis是十分不科学的&#xff0c;所以redis官方提供了redis的应用层协议RESP&#xff0c;更具这个协议可以实现一个和redis服务器通信的客户端程序&#xff0c;来简化和完善redis的使用。现阶段有很多封装了RESP协议的库…

clangd LSP 不能找到项目中的文件

clangd LSP 不能找到项目中的文件 clangd LSP 不能找到项目中的文件 clangd LSP 不能找到项目中的文件 Normally you need to create compile_commands.json。 如果你使用 cmake 作为构建工具&#xff0c;请执行下面的命令&#xff1a; cmake -DCMAKE_EXPORT_COMPILE_COMMAN…

【内存】Linux 内核优化实战 - vm.overcommit_memory

目录 vm.overcommit_memory 解释一、概念与作用二、参数取值与含义三、相关参数与配置方式四、实际应用场景建议五、注意事项 vm.overcommit_memory 解释 一、概念与作用 vm.overcommit_memory 是 Linux 内核中的一个参数&#xff0c;用于控制内存分配的“过度承诺”&#xf…