華為OD-2024年E卷-字符串化繁為簡[200分] -- python

問題描述:

給定一個輸入字符串,字符串只可能由英文字母('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…