Day 25:1807. 替换字符串中的括号内容

Leetcode 1807. 替换字符串中的括号内容

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

  • 比方说,字符串 “(name)is(age)yearsold” 中,有 两个 括号对,分别包含键 “name” 和 “age” 。

你知道许多键对应的值,这些关系由二维字符串数组 knowledge 表示,其中 knowledge[i] = [keyi, valuei] ,表示键 keyi 对应的值为 valuei 。
你需要替换 所有 的括号对。当你替换一个括号对,且它包含的键为 keyi 时,你需要:

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

knowledge 中每个键最多只会出现一次。s 中不会有嵌套的括号。
请你返回替换 所有 括号对后的结果字符串。

image.png

为了方便查找应该被替换的字符串,将其写入到一个 Map 中,可以快速查询到替换的字符串。
遍历字符串每个字符,如果遇到 (,就查找 )的位置,查找替换的字符串加入到新字符串中;否则直接加入到新字符串中。

完整代码

class Solution {public String evaluate(String s, List<List<String>> knowledge) {Map<String, String> map = new HashMap<>();StringBuilder res = new StringBuilder();for (List<String> strings : knowledge) {map.put(strings.get(0), strings.get(1));}int len = s.length();int i = 0;while (i < len) {if (s.charAt(i) == '(') {int j = i + 1;while (s.charAt(j) != ')') j++;String sub = s.substring(i + 1, j);res.append(map.getOrDefault(sub, "?"));i = j;} else {res.append(s.charAt(i));}i++;}return String.valueOf(res);}
}

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

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

相关文章

Ansible介绍

一、Ansible概述 Ansible是一款开源的自动化运维工具&#xff0c;基于Python开发&#xff0c;主要用于批量系统配置、批量程序部署、批量运行命令等功能。它集合了众多运维工具的优点&#xff0c;并通过其高度模块化的特性&#xff0c;实现了灵活、可扩展的自动化运维管理。 …

ICMAN触摸芯片握手感应演示

随着科学技术的不断发展&#xff0c;触摸芯片在我们的生活中开始扮演着越来越多同时也越来越重要的角色&#xff0c;大到工业设备小到家用电器中都能找到它的身影。 相信大家都很好奇触摸芯片到底是怎样一个神奇的存在呢&#xff1f;那我们就来一探究竟。 要了解触摸芯片&…

ARDUINO NRF24L01

连线 5v 3.3皆可 gnd Optimized high speed nRF24L01 driver class documentation: Optimized High Speed Driver for nRF24L01() 2.4GHz Wireless Transceiver 同时下载同一个程序 案例默认引脚ce ces &#xff0c;7&#xff0c;8 可以 修改为 9,10 安装库 第一个示例 两…

热门开源项目推荐

以下是一些近年来非常受欢迎的开源项目&#xff0c;这些项目涵盖了多种编程语言和应用领域&#xff0c;适合不同需求和兴趣的开发者参与和学习。 1. TensorFlow 描述&#xff1a;一个用于机器学习的开源库&#xff0c;广泛应用于深度学习和人工智能项目。语言&#xff1a;Pyt…

【每日一题】522. 最长特殊序列 II

思路 由于数据量比较小&#xff0c;可以使用遍历的方法。最主要的就是按照题目中的定义&#xff0c;实现一个判断a字符串是否是b字符串的子串的方法。 选取当前字符串&#xff0c;遍历其他字符串&#xff0c;如果当前字符串是其他字符串中某一个的子串&#xff0c;跳过它&…

Java基础学习-方法

目录 方法基础概念 方法的格式&#xff1a; 案例&#xff1a;最简单方法的定义 案例&#xff1a;带参数的方法调用 案例&#xff1a;求圆的面积 带有返回值的方法&#xff1a; 方法注意点 方法的重载&#xff1a; ​编辑 案例&#xff1a;数组的遍历&#xff1a; 案例…

C++新特性复习1 版本11

参照来自于&#xff1a; cppreference.com 老实说&#xff0c;我是毕业不久就开始用C&#xff0c;原因就是VC&#xff0c;当时用来做界面。还好吧&#xff0c;不是觉得太难&#xff0c;起码对数学底子没有要求&#xff0c;后面偶尔也用用&#xff0c;但是整体还是C居多。现在项…

基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统架构 4.2 GoogLeNet网络简介 4.3 手势检测 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 训练过程如下&#xff1a; 将摄像头对准手势&#xff0c;然后进行…

【Kubernetes】k8s--安全机制

机制说明 Kubernetes 作为一个分布式集群的管理工具&#xff0c;保证集群的安全性是其一个重要的任务。API Server 是集群内部各个组件通信的中介&#xff0c; 也是外部控制的入口。所以 Kubernetes 的安全机制基本就是围绕保护 API Server 来设计的。 比如 kubectl 如果想向 …

Commons-Collections篇-CC2链分析

前言 3.1-3.2.1版本中TransformingComparator并没有去实现Serializable接口&#xff0c;是不可以被序列化的&#xff0c;所以我们重新搭建一个4.0的具有漏洞的CC环境 CC2链主要使用的和CC4一样&#xff0c;但是区别在于CC2避免了使用Transformer数组&#xff0c;没有使用Insta…

q-table重写分页

<template #bottom"scope"><q-space/><div class"row">每页的行数&#xff1a;<q-selectv-model"scope.pagination.rowsPerPage"borderless:options"[10,20,30,50]"></q-select> <div class"ro…

elementui写一个自定义的rangeInput的组件

组件定义 使用el-row确保元素都在一行上对外暴露的prop是minValue和maxValue&#xff0c;但是不建议直接使用&#xff0c;使用计算属性minValueComputed和maxValueComputed更改计算属性的值的不要直接更改计算属性&#xff0c;也不要直接更改原本的prop&#xff0c;通知外层的父…

网络命令大全windows linux

涉及到网络命令时&#xff0c;以下是一些常用的命令和它们的作用&#xff0c;这些命令可以在Windows命令提示符或者Unix/Linux终端中使用。这些命令有助于管理网络连接、解决网络问题以及进行网络诊断。 Windows 命令 ipconfig 显示本地计算机的网络配置信息&#xff0c;包括I…

Aeron:Common Errors

Aeron 遇到的大多数问题通常都是由于资源问题造成的&#xff0c;如 CPU 资源不足、磁盘 I/O 速度慢、内存分页等。Linux 提供了许多工具来帮助诊断这些问题&#xff0c;其中一些工具将在 Aeron Troubleshooting 部分进行介绍。 一、Aeron timeouts Media Driver Timeout Medi…

6.深度卷积神经网络

目录 1.深度卷积神经网络ALexNet 2012AlexNetAlexNet架构AlexNet与LeNet复杂度对比总结代码实现2.使用块的网络VGG 2014 image竞猜第二VGG架构进度总结代码实现3.网络中的网络NiN全连接层的问题NiN块NiN架构总结代码实现4.含并行连结的网络(GoogLeNet)2014 image竞猜第一最好…

总结CSS 实现新手引导效果的六种方式

前言 我们在平常做业务中&#xff0c;在功能变更&#xff0c;或者有大的改动时&#xff0c;经常会用到新手引导功能&#xff0c; 虽然有很多库可以使用&#xff0c; 但是有时候很简单的需求&#xff0c;没必要引入库&#xff0c; 本文用最简化代码&#xff0c;实现一下新手引导…

这些常用 MySQL 用法,99% 的人都不知道!

本文首发于公众平台&#xff1a;腐烂的橘子 MySQL 对于后端程序员来讲是最熟悉不过了&#xff0c;不过 MySQL 有一些基本用法&#xff0c;99% 的人都不知道&#xff0c;考验技术基本功的时候到了&#xff0c;快来看看有没有你不知道的&#xff1a; select select 0,2,3,4; 会…

大数据开发语言Scala(一) - Scala入门

引言 在当今的大数据时代&#xff0c;数据量和数据处理的复杂性不断增加&#xff0c;传统的编程语言已经难以满足需求。Scala作为一门新兴的编程语言&#xff0c;以其简洁、强大和高效的特性&#xff0c;迅速成为大数据开发的热门选择。本文将详细介绍Scala语言的基础知识&…

react中useEffect函数的详细用法

1、函数介绍 useEffect 是 React 中的一个 Hook&#xff0c;用于在函数组件中处理副作用&#xff08;如数据获取、订阅、手动更改 DOM 等&#xff09;。与类组件中的生命周期方法&#xff08;如 componentDidMount、componentDidUpdate 和 componentWillUnmount&#xff09;类…

Java面试题之MySQL事务详解

事务是什么 MySQL中的事务&#xff08;Transaction&#xff09;是数据库管理系统执行的一个逻辑操作单元&#xff0c;它是由一系列数据库操作组成的逻辑工作单元。事务是并发控制的单位&#xff0c;也是用户定义的一个操作序列。事务的主要目的是确保数据的完整性和一致性&…