社区讨论LinuxDo 最新
Leetcode每日一题 —— 1807. 替换字符串中的括号内容
力扣 LeetCode 1807. 替换字符串中的括号内容 - 力扣(LeetCode) 1807. 替换字符串中的括号内容 - 给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键。 比方说,字符串 "(name)is(age)yearsold" 中,有 两个 括号对,分别包含键 "name" 和 "age" 。 你知道许多键对应的值,这些关系由二维字符串数组 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示键 keyi 对应的值为 value…
内容摘要
作者:#魔法师
板块:#开发调优
力扣 LeetCode
1807. 替换字符串中的括号内容 - 力扣(LeetCode)
1807. 替换字符串中的括号内容 - 给你一个字符串 s ,它包含一些括号对,每个括号中包含一个 非空 的键。
* 比方说,字符串 "(name)is(age)yearsold" 中,有 两个 括号对,分别包含键 "name" 和 "age" 。
你知道许多键对应的值,这些关系由二维字符串数组 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示键 keyi 对应的值为 valuei 。
你需要替换...
思路
先把KV存到Hash中,然后遍历字符串,遇到左括号找对应右括号取Key对应值。
做完昨天的题表示,不能嵌套的括号弱爆了!
代码
class Solution {
public String evaluate(String s, List<List<String>> knowledge) {
HashMap<String, String> map = new HashMap<>();
for (List<String> list : knowledge) {
map.put(list.get(0), list.get(1));
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
int start = ++i;
while (i < s.length() && s.charAt(i) != ')') {
i++;
资讯来源
LinuxDo