文章目录

  • 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阿明),一起加油、一起学习进步!

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

  1. LC-1807. 替换字符串中的括号内容(哈希模拟)

    1807. 替换字符串中的括号内容 难度中等30 给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键. 比方说,字符串 "(name)is(age)yearsold&qu ...

  2. [JS]正则式的使用示例:替换字符串中所有指定内容

    JS中是没有replaceAll这个api 的,想要替换一个字符串中所有的指定内容,需要用到正则式. 对正则式了解甚少也不要紧,看下面这个demo(一看就会) 现在需要把一个字符串里的所有#号换成空格 ...

  3. java中如何替换中括号_关于Java:如何替换字符串中的括号

    我有一个包含标记的字符串列表. 令牌是: {ARG:token_name}. 我也有标记的哈希图,其中key是标记,value是我要用来替换标记的值. 当我使用" replaceAll&qu ...

  4. MySQL 去除字符串中的括号以及括号内的内容

    MySQL 去除字符串中的括号以及括号内的内容 update 表 set 列名 = REPLACE(列名,SUBSTRING(列名 , LOCATE( '(',列名) , LOCATE(')',列名) ...

  5. 制作映射表并替换字符串中的内容

    制作映射表并替换字符串中内容 映射表 功能:制作用于字符串替换的映射表 格式:字符串名.maketrans('查找字符','替换字符') 返回:字典(一一对应的ASCII码值) b = str.mak ...

  6. java 通过正则表达式替换字符串中部分内容

    最近开发遇到个需求,需要使用正则来替换字符串中间的一部分内容,也是面向百度探索了一番,之前还没怎么在实际中用过正则_,这里记录一下. 话不多说,直接上代码(解释在后面): public static ...

  7. java正则表达式所有字符串_java正则表达式如何获取字符串中所有匹配内容

    java正则表达式如何获取字符串中所有匹配内容以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java正则表达式如何获取 ...

  8. python中替换字符串中字符_python替换字符串中的某个字符

    python_split_strip_replace使用方法 使用python时会经常要对字符串做一些处理,比如:分割字符串.去掉空格.替换字符串 中的某个字符等,下面介绍下这几个功能的使用. 一.  ...

  9. 判断字符串中的括号是否匹配——c和c++实现

    判断字符串中的括号是否匹配 递归实现:  先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配--  代码如下: #include <stdio.h> #include & ...

最新文章

  1. c++编译优化,arm优化
  2. linux接收网络数据并存存储,linux网络数据包数据结构 Socket Buffer
  3. html中空格字符实体整理
  4. python展示_python展示ppt
  5. 三十二、VsCode前端的开发工具介绍和使用
  6. 简单文件系统的实现_300来行代码带你实现一个能跑的最小Linux文件系统
  7. java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。
  8. [转载] Java三元运算符示例
  9. python安卓自动化脚本_Autojs-用JavaScript实现自己的安卓手机自动化工具脚本
  10. ERP项目实施记录06
  11. git 如何忽略掉文件夹_如何使git忽略某些文件或文件夹
  12. Ubuntu 16 安装JDK1.8
  13. perl查看文件,提取指定信息输出到文件
  14. 流水灯c语言代码大全,单片机闪烁灯流水灯汇编代码大全
  15. python爬携程_Python crawler:对携程的航班数据进行抓取,python,爬虫,爬取
  16. win10c盘扩容_Win10磁盘分区工具-无损分区助手
  17. 伪装学渣未删减部分_慎重勇者:破坏神和圣哉做了什么?第9话战帝被删减剧情补充...
  18. 人生「价值」的三个关键词|《价值》
  19. 联想拯救者y7000怎么配置Java环境_联想拯救者y7000重新安装系统教程
  20. 使用breakpad收集native奔溃日志及dump解析

热门文章

  1. win10怎么设置默认输入法_win10系统输入法失效打不了字怎么办
  2. win10开启oracle服务器配置,Windows环境(Win10)下安装、配置服务器类Oracle Database 11g Release 2...
  3. matlab 归一化_机器学习中如何用Fscore进行特征选择(附Matlab代码)
  4. 【Nginx】通过反向代理配置本地图床功能
  5. 【机器学习】总结:线性回归求解中梯度下降法与最小二乘法的比较
  6. 玩Linux碰到的问题以及使用技巧总结
  7. 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
  8. java 复杂 sql_复杂的SQL条件
  9. 银联Apple Pay 总结
  10. 追MM与设计模式的有趣见解