当前位置:网站首页>LeetCode每日一题(1807. Evaluate the Bracket Pairs of a String)
LeetCode每日一题(1807. Evaluate the Bracket Pairs of a String)
2022-08-01 20:41:00 【wangjun861205】
You are given a string s that contains some bracket pairs, with each pair containing a non-empty key.
For example, in the string “(name)is(age)yearsold”, there are two bracket pairs that contain the keys “name” and “age”.
You know the values of a wide range of keys. This is represented by a 2D string array knowledge where each knowledge[i] = [keyi, valuei] indicates that key keyi has a value of valuei.
You are tasked to evaluate all of the bracket pairs. When you evaluate a bracket pair that contains some key keyi, you will:
Replace keyi and the bracket pair with the key’s corresponding valuei.
If you do not know the value of the key, you will replace keyi and the bracket pair with a question mark “?” (without the quotation marks).
Each key will appear at most once in your knowledge. There will not be any nested brackets in s.
Return the resulting string after evaluating all of the bracket pairs.
Example 1:
Input: s = “(name)is(age)yearsold”, knowledge = [[“name”,“bob”],[“age”,“two”]]
Output: “bobistwoyearsold”
Explanation:
The key “name” has a value of “bob”, so replace “(name)” with “bob”.
The key “age” has a value of “two”, so replace “(age)” with “two”.
Example 2:
Input: s = “hi(name)”, knowledge = [[“a”,“b”]]
Output: “hi?”
Explanation: As you do not know the value of the key “name”, replace “(name)” with “?”.
Example 3:
Input: s = “(a)(a)(a)aaa”, knowledge = [[“a”,“yes”]]
Output: “yesyesyesaaa”
Explanation: The same key can appear multiple times.
The key “a” has a value of “yes”, so replace all occurrences of “(a)” with “yes”.
Notice that the "a"s not in a bracket pair are not evaluated.
Constraints:
- 1 <= s.length <= 105
- 0 <= knowledge.length <= 105
- knowledge[i].length == 2
- 1 <= keyi.length, valuei.length <= 10
- s consists of lowercase English letters and round brackets ‘(’ and ‘)’.
- Every open bracket ‘(’ in s will have a corresponding close bracket ‘)’.
- The key in each bracket pair of s will be non-empty.
- There will not be any nested bracket pairs in s.
- keyi and valuei consist of lowercase English letters.
- Each keyi in knowledge is unique.
建立两个 buffer, 一个保存括号中的 key, 一个保存答案, 遇到’(‘后,往后的所有非’)‘字符都放到 key buffer 中, 遇到’)'后将 key buffer 中的字符串拿出来查是否有对应的 value, 如果有就往答案中 push value,如果没有则往答案中 push ‘?’, 不管是那种情况, 最后都要清理 key buffer
use std::collections::HashMap;
impl Solution {
pub fn evaluate(s: String, knowledge: Vec<Vec<String>>) -> String {
let knowledge = knowledge
.into_iter()
.map(|l| (l[0].clone(), l[1].clone()))
.collect::<HashMap<String, String>>();
let mut buff = String::new();
let mut in_bracket = false;
let mut ans = String::new();
for c in s.chars() {
match c {
'(' => {
in_bracket = true;
}
')' => {
if let Some(v) = knowledge.get(&buff) {
ans.push_str(v);
} else {
ans.push('?');
}
buff.clear();
in_bracket = false;
}
_ => {
if in_bracket {
buff.push(c);
continue;
}
ans.push(c);
}
}
}
ans
}
}
边栏推荐
- 【无标题】
- Pytorch框架学校记录11——搭建小实战完整细节
- 面试官:大量请求 Redis 不存在的数据,从而打倒数据库,有什么方案?
- WhatsApp group sending actual combat sharing - WhatsApp Business API account
- 有点奇怪!访问目的网址,主机能容器却不行
- Failed to re-init queues : Illegal queue capacity setting (abs-capacity=0.6) > (abs-maximum-capacity
- Go Atomic
- STAHL touch screen repair all-in-one display screen ET-316-TX-TFT common faults
- 【节能学院】安科瑞餐饮油烟监测云平台助力大气污染攻坚战
- 宝塔搭建PESCMS-Ticket开源客服工单系统源码实测
猜你喜欢
Zheng Xiangling, Chairman of Tide Pharmaceuticals, won the "2022 Outstanding Influential Entrepreneur Award" Tide Pharmaceuticals won the "Corporate Social Responsibility Model Award"
SIPp 安装及使用
AQS原理和介绍
WhatsApp群发实战分享——WhatsApp Business API账号
面试突击70:什么是粘包和半包?怎么解决?
【Dart】dart之mixin探究
WeChat applet cloud development | personal blog applet
【Untitled】
Interview assault 70: what is the glue bag and a bag?How to solve?
StringTable详解 串池 性能调优 字符串拼接
随机推荐
OSG Notes: Set DO_NOT_COMPUTE_NEAR_FAR to manually calculate far and near planes
4.1 配置Mysql与注册登录模块
Convolutional Neural Network (CNN) mnist Digit Recognition - Tensorflow
系统收集集
【Social Media Marketing】How to know if your WhatsApp is blocked?
[Multi-task model] Progressive Layered Extraction: A Novel Multi-Task Learning Model for Personalized (RecSys'20)
[Energy Conservation Institute] Comparative analysis of smart small busbar and column head cabinet solutions in data room
tiup mirror genkey
任务调度线程池基本介绍
SIPp 安装及使用
Use WeChat official account to send information to designated WeChat users
【Kaggle】House Prices
解除360对默认浏览器的检测与修改
Little data on how to learn?Jida latest small learning data review, 26 PDF page covers the 269 - page document small data learning theory, method and application are expounded
Qt设置应用程序开机自启 解决设置失败原因
tiup mirror init
Addition, Subtraction, Multiplication of Large Integers, Multiplication and Division of Large Integers and Ordinary Integers
如何用Chrome编辑以及调试代码
Pytorch框架学习记录12——完整的模型训练套路
】 【 nn. The Parameter () to generate and why do you want to initialize