LeetCode 1807. 替换字符串中的括号内容(哈希map)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键。

比方说,字符串 "(name)is(age)yearsold" 中,有 两个 括号对,分别包含键 “name” 和 “age” 。
你知道许多键对应的值,这些关系由二维字符串数组 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示键 keyi 对应的值为 valuei 。

你需要替换 所有 的括号对。当你替换一个括号对,且它包含的键为 keyi 时,你需要:

  • 将 keyi 和括号用对应的值 valuei 替换。
  • 如果从 knowledge 中无法得知某个键对应的值,你需要将 keyi 和括号用问号 "?" 替换(不需要引号)。

knowledge 中每个键最多只会出现一次。s 中不会有嵌套的括号。

请你返回替换 所有 括号对后的结果字符串。

示例 1:
输入:s = "(name)is(age)yearsold", 
knowledge = [["name","bob"],["age","two"]]
输出:"bobistwoyearsold"
解释:
键 "name" 对应的值为 "bob" ,所以将 "(name)" 替换为 "bob" 。
键 "age" 对应的值为 "two" ,所以将 "(age)" 替换为 "two" 。示例 2:
输入:s = "hi(name)", knowledge = [["a","b"]]
输出:"hi?"
解释:由于不知道键 "name" 对应的值,所以用 "?" 替换 "(name)" 。示例 3:
输入:s = "(a)(a)(a)aaa", knowledge = [["a","yes"]]
输出:"yesyesyesaaa"
解释:相同的键在 s 中可能会出现多次。
键 "a" 对应的值为 "yes" ,所以将所有的 "(a)" 替换为 "yes" 。
注意,不在括号里的 "a" 不需要被替换。示例 4:
输入:s = "(a)(b)", knowledge = [["a","b"],["b","a"]]
输出:"ba"提示:
1 <= s.length <= 105
0 <= knowledge.length <= 105
knowledge[i].length == 2
1 <= keyi.length, valuei.length <= 10
s 只包含小写英文字母和圆括号 '('')' 。
s 中每一个左圆括号 '(' 都有对应的右圆括号 ')' 。
s 中每对括号内的键都不会为空。
s 中不会有嵌套括号对。
keyi 和 valuei 只包含小写英文字母。
knowledge 中的 keyi 不会重复。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/evaluate-the-bracket-pairs-of-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 哈希 map 存储 key,value
class Solution {
public:string evaluate(string s, vector<vector<string>>& knowledge) {unordered_map<string,string> m;for(auto& k : knowledge)m[k[0]] = k[1];string ans, key;bool left = false;for(auto c : s){if(c == '('){left = true;continue;}else if(c == ')'){left = false;if(m.find(key) != m.end())ans += m[key];elseans += '?';key = "";continue;}if(left)key += c;elseans += c;}return ans;}
};

396 ms 114.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

bootice.exe linux 启动盘,下载BOOTICE来把你的U盘做成启动盘

为了方便维护电脑&#xff0c;需要制作一个合适的U盘启动盘。网上制作U盘启动盘的工具也有很多&#xff0c;我下面使用bootice这个U盘启动盘制作工具来制作U盘启动盘。下载BOOTICE1、BOOTICE>分区管理G&#xff0c;对U盘进行格式化&#xff0c;FAT16&#xff0c;卷标设置为G…

excel打开空白_啥?下载的文件显示“文件已损坏,无法打开”?

推荐文章&#xff1a;Windows10系统的优化工具神器对于一个开发人员的我&#xff0c;这两天在网站做一个导出Excel表格功能&#xff0c;遇到了一个坑。在本地测试导出并且可以打开&#xff0c;但是到了测试环境导出打开却显示“文件已损坏&#xff0c;无法打开”。刚开始以为是…

erp故障处理流程图_PLC故障常见原因及处理方法!

欢迎关注“热控圈 ” ID&#xff1a;rekongquan传播热控知识&#xff0c;分享技术精华&#xff01;第一部分、运行中PLC故障常见原因及处理方法(一)、外围电路元器件故障此类故障在PLC工作一定时间后的故障中经常发生。在PLC控制回路中如果出现元器件损坏故障&#xff0c;PLC控…

LeetCode 1808. 好因子的最大数目(整数拆分,乘积最大)

文章目录1. 题目2. 解题1. 题目 给你一个正整数 primeFactors 。你需要构造一个正整数 n &#xff0c;它满足以下条件&#xff1a; n 质因数&#xff08;质因数需要考虑重复的情况&#xff09;的数目 不超过 primeFactors 个。n 好因子的数目 最大化。 如果 n 的一个因子可以…

安卓apk签名提取工具_Android测试工具入门介绍(二)

今天我们来讲讲一款牛逼的安卓集成工具&#xff1a;就是大名还算顶顶的AndroidKill&#xff1b;先来个软件界面截图&#xff1a;多么简单有华丽的界面啊&#xff01;我说的是功能华丽&#xff0c;该有的功能他都有。首先我们先点开菜单中的Android&#xff0c;配置下APKTOOL管理…

atoi函数_每日一道 LeetCode (50):字符串转换整数 (atoi)

❝每天 3 分钟&#xff0c;走上算法的逆袭之路。❞前文合集每日一道 LeetCode 前文合集代码仓库GitHub&#xff1a;https://github.com/meteor1993/LeetCodeGitee&#xff1a;https://gitee.com/inwsy/LeetCode题目&#xff1a;最长回文子串难度&#xff1a;「中等」题目来源&a…

面向对象4大特性的作用

文章目录1. 封装2. 抽象3. 继承4. 多态学习自 极客时间《设计模式之美》 1. 封装 隐藏保护内部数据&#xff0c;不被随意修改&#xff0c;提高可维护性仅暴露必要的接口&#xff0c;提高易用性 2. 抽象 提高代码可扩展、可维护性&#xff0c;修改不需要改变定义&#xff0c;…

远程连接Kali Linux使用PuTTY实现SSH远程连接

远程连接Kali Linux使用PuTTY实现SSH远程连接 本书主要以在Android设备上安装的Kali Linux操作系统为主&#xff0c;介绍基于Bash Shell渗透测试。由于在默认情况下&#xff0c;在Android设备上安装的Kali操作系统没有安装任何工具。如果直接在手机或平板上安装一些软件时&…

python 百度ocr安装_Python调用百度OCR实现图片文字识别的示例代码

百度AI提供了一天50000次的免费文字识别额度&#xff0c;可以愉快的免费使用&#xff01;下面直接上方法&#xff1a; 首先在百度AI创建一个应用&#xff0c;按照下图创建即可&#xff0c;创建后会获得如下&#xff1a;创建后会获得如下信息&#xff1a; APP_ID ****** API_KE…

哪些代码设计看似是面向对象,实际是面向过程的?

文章目录1. 滥用 getter、setter 方法2. 滥用全局变量、全局方法3. 数据、方法分离学习自 极客时间《设计模式之美》 1. 滥用 getter、setter 方法 违反了封装特性&#xff0c;风格退化为面向过程编程 2. 滥用全局变量、全局方法 Constants 类 所有的常量都放在这个类中&…

vue 图片拖动加载 类似于地图_前端性能优化之图片懒加载(附vue自定义指令)...

作者&#xff1a;lzg9527链接&#xff1a;https://juejin.cn/post/6903774214780616718在类电商类项目&#xff0c;往往存在大量的图片&#xff0c;如 banner 广告图&#xff0c;菜单导航图&#xff0c;美团等商家列表头图等。图片众多以及图片体积过大往往会影响页面加载速度&…

vant toast 指定挂载到指定位置_docker卷挂载技术

卷技术&#xff0c;容器内部数据映射到宿主机上一、直接使用命令来挂载docker run -it -v /home/test:/home centos /bin/bash# 在主机上查看 docker运行容器的id [rootlocalhost home]# docker ps CONTAINER ID IMAGE COMMAND CREATED …

数据仓库 Hive(内含大数据镜像下载)

文章目录1. 特点2. Hive 体系架构3. 安装 Hive3.1 安装 MySQL3.2 安装 Hive3.3 配置 Hive4. 实践4.1 函数4.2 Hive Shell安装没成功&#xff1a;直接用现成的镜像 大数据Linux实验环境虚拟机镜像文件 http://dblab.xmu.edu.cn/blog/1645-2/ cloudera-quickstart-vm-集成了大数据…

一台机器起多个filebeat_全自动多色丝印机一台多少钱?

全自动多色丝印机运用在于几种领域当中&#xff0c;其中比较常见的应该就是包装行业了。比如我们日常生活中&#xff0c;经常看到的洗发水外壳上&#xff0c;化妆品外壳上&#xff0c;膏霜瓶瓶身上等地方的图文&#xff0c;都是使用全自动多丝印机印刷来的。全自动多色丝印机是…

C语言做线性分析,C语言版的线性回归分析函数

前几天&#xff0c;清理出一些十年以前DOS下的程序及代码&#xff0c;看来目前也没什么用了&#xff0c;想打个包刻在光碟上&#xff0c;却发现有些代码现在可能还能起作用&#xff0c;其中就有计算一元回归和多元回归的代码&#xff0c;一看代码文件时间&#xff0c;居然是199…

python里str什么意思_Python 3 字符串中的 STR 和 Bytes 究竟有什么区别?

原标题&#xff1a;Python 3 字符串中的 STR 和 Bytes 究竟有什么区别&#xff1f; Python2的字符串有两种&#xff1a;str和Unicode&#xff0c;Python3的字符串也有两种&#xff1a;str和Bytes。Python2的str相当于Python3的Bytes&#xff0c;而Unicode相当于Python3的Bytes。…

word 插入代码_突破Word页码困境,这招简单又实用的自动更新法,90%的人还不会!...

微信扫码观看全套Excel、Word、PPT视频在工作和学习中&#xff0c;常会遇到这样的情况&#xff0c;对于一篇既含有封面&#xff0c;又含有目录的文档&#xff0c;要求对它的页码进行如下设置&#xff1a;在文档底部靠右位置插入页码&#xff0c;页码形式为“第几页&#xff0c;…

接口 vs 抽象类 的区别

文章目录1. 抽象类2. 接口类3. 如何选择学习自 极客时间《设计模式之美》 1. 抽象类 2. 接口类 3. 如何选择 表示 is - a 关系&#xff0c;解决代码复用&#xff1a;抽象类&#xff08;自下而上&#xff0c;子类的代码重复&#xff0c;抽象成上层父类&#xff09; 表示 has - …

数据结构与算法 pdf_整理一个月完成的数据结构与算法PDF和测试代码免费拿

点击上方「10分钟编程」关注我呦让我们每天「博学」一点点数据结构与算法作为一名2021届的学生&#xff0c;今年7月份就要面临秋招了&#xff0c;那么对于应届生来说&#xff0c;要想脱颖而出&#xff0c;笔试就显得太重要了&#xff0c;算法题是笔试环节的最重要组成部分&…

天池 在线编程 部门统计(哈希)

文章目录1. 题目2. 解题1. 题目 描述 公司给你提供了所有员工的信息&#xff0c;包括其ID&#xff0c;姓名和所属部门。 以及他们之间的朋友关系&#xff0c;每个关系中由2个ID组成&#xff0c;如 “1, 2” 代表1号员工和2号员工是朋友。 朋友关系不具有传递性&#xff0c;即B…