当前位置:网站首页>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
}
}
边栏推荐
- 【节能学院】数据机房中智能小母线与列头柜方案的对比分析
- LinkedList源码分享
- 多线程之生产者与消费者
- tiup mirror genkey
- Redis does web page UV statistics
- 4.1 配置Mysql与注册登录模块
- STAHL touch screen repair all-in-one display screen ET-316-TX-TFT common faults
- system collection
- 【多任务学习】Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts KDD18
- 【luogu P1912】诗人小G(二分栈)(决策单调性优化DP)
猜你喜欢

StringTable详解 串池 性能调优 字符串拼接

解除360对默认浏览器的检测与修改

【个人作品】无线网络图传模块

Remove 360's detection and modification of the default browser

研究生新同学,牛人看英文文献的经验,值得你收藏

【Kaggle】House Prices

启明云端分享|盘点ESP8684开发板有哪些功能

New graduate students, great experience in reading English literature, worthy of your collection

通配符 SSL/TLS 证书

Buttons with good user experience should not have hover state on mobile phones
随机推荐
[Energy Conservation Institute] Application of Intelligent Control Device in High Voltage Switchgear
Based on FPGA in any number of bytes (single-byte or multibyte) serial port (UART) to send (including source engineering)
Where should I prepare for the PMP exam in September?
字符串
算法---解码方法(Kotlin)
tiup mirror init
外骨骼机器人(七):标准步态数据库
98.嵌入式控制器EC实战 EC开发板开发完成
MySQL Syntax Basics
tiup mirror genkey
Protocol Buffer usage
Pytorch框架学校记录11——搭建小实战完整细节
"No title"
仿牛客论坛项目
通俗解释:什么是临床预测模型
iptables的使用简单测试
Go Atomic
Convolutional Neural Network (CNN) mnist Digit Recognition - Tensorflow
Postman 批量测试接口详细教程
StringTable详解 串池 性能调优 字符串拼接