LeetCode 616. 给字符串添加加粗标签(Trie树)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给一个字符串 s 和一个字符串列表 dict ,你需要将在字符串列表中出现过的 s 的子串添加加粗闭合标签 <b> 和 </b>
如果两个子串有重叠部分,你需要把它们一起用一个闭合标签包围起来。
同理,如果两个子字符串连续被加粗,那么你也需要把它们合起来用一个加粗标签包围。

样例 1:
输入:
s = "abcxyz123"
dict = ["abc","123"]
输出:
"<b>abc</b>xyz<b>123</b>"样例 2:
输入:
s = "aaabbcc"
dict = ["aaa","aab","bc"]
输出:
"<b>aaabbc</b>c"注意:
给定的 dict 中不会有重复的字符串,且字符串数目不会超过 100 。
输入中的所有字符串长度都在范围 [1, 1000] 内。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-bold-tag-in-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 跟 LeetCode 758. 字符串中的加粗单词(Trie树) 一模一样,改下变量名,字符集改成128大小即可
class trie
{
public:trie* next[128] = {NULL};bool isend =  false;int count = 0;void insert(string& s){trie* cur = this;for(int i = 0; i < s.size(); i++){if(cur->next[s[i]] == NULL)cur->next[s[i]] = new trie();cur = cur->next[s[i]];}cur->count++;cur->isend = true;}
};
class Solution {
public:string addBoldTag(string S, vector<string>& words) {trie *t = new trie(), *cur;for(auto& w : words)t->insert(w);vector<bool> bold(S.size(), false);//加黑标记int boldl = 0, boldr=-1;//开始加粗的位置l,rfor(int i = 0, j; i < S.size(); ++i){cur = t;boldl = max(boldl, i);//加黑的地方左端点j = i;while(j < S.size() && cur && cur->next[S[j]]){cur = cur->next[S[j]];if(cur->isend)boldr = j;//可以加黑的右端点j++;}while(boldl <= boldr)bold[boldl++] = true;//标记加黑}string ans;for(int i = 0; i < S.size(); ++i){if((i==0 && bold[i]) || (i>0 && !bold[i-1] && bold[i]))//i起点ans += "<b>";ans += S[i];if((i==S.size()-1 && bold[i]) || (i<S.size()-1 && bold[i] && !bold[i+1]))//i是终点ans += "</b>";}return ans;}
};

156 ms 424.4 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

var与dynamic区别

注意&#xff1a;var与dynamic这两个关键字&#xff0c;只是看起来很相 似&#xff0c;仅此而已&#xff01; var表示“变量的类型是在编译时决定的”&#xff0c;但是dynamic表 示“变量的类型是在运行时决定的”。因此&#xff0c;dynamic与var具有截然不同的含义。 var让 …

LeetCode 158. 用 Read4 读取 N 个字符 II

文章目录1. 题目2. 解题1. 题目 给你一个文件&#xff0c;并且该文件只能通过给定的 read4 方法来读取&#xff0c;请实现一个方法使其能够读取 n 个字符。 注意&#xff1a;你的 read 方法可能会被调用多次。 read4 的定义&#xff1a; 参数类型: char[] buf返回类型: int …

小白学数据分析-----数据指标 累计用户数的使用

小白学数据分析--数据指标累计用户数的使用 累计用户数是指注册用户数的累计&#xff0c;即可以认为是新用户的累计。在一般的数据统计中&#xff0c;我们基本上都会涉及到这个指标&#xff0c;且这个指标是逐渐累加的&#xff0c;比如&#xff1a; 时间 注册…

LeetCode 751. IP 到 CIDR(贪心)

文章目录1. 题目2. 解题1. 题目 给定一个起始 IP 地址 ip 和一个我们需要包含的 IP 的数量 n&#xff0c;返回用列表&#xff08;最小可能的长度&#xff09;表示的 CIDR块的范围。 CIDR 块是包含 IP 的字符串&#xff0c;后接斜杠和固定长度。例如&#xff1a;“123.45.67.8…

ORA-23616:执行块5失败

解决方案&#xff1a; 1. 查看错误信息 STRMADMning>select error_number,error_message 2 from dba_recoverable_script_errors 3 where script_idD74179203F11445D8F3F3F77C0749A1D 4 and block_num5; 2. 根据错误信息进行排错 3. 根据实际情况进行执行/回滚/清除…

LeetCode 308. 二维区域和检索 - 可变(前缀和)

文章目录1. 题目2. 解题1. 题目 给你一个 2D 矩阵 matrix&#xff0c;请计算出从左上角 (row1, col1) 到右下角 (row2, col2) 组成的矩形中所有元素的和。 上述粉色矩形框内的&#xff0c;该矩形由左上角 (row1, col1) (2, 1) 和右下角 (row2, col2) (4, 3) 确定。其中&am…

实战 SQL Server 2008 数据库误删除数据的恢复 (转)

今天有个朋友很着急地打电话给我&#xff0c;他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录&#xff0c;而这个数据库之前没有任何备份。让我帮他解决一下&#xff0c;不然他要赔偿客户很多钱。 SQL Server中误删除数据的恢复本来不是件难事&#xff0c;从…

在线销售数据分析–人货场三维分析角度

文章目录一、数据来源及理解二、分析思路三、数据处理数据预处理数据清洗数据转换四、数据描述性统计五、三维分析-人用户质量分析用户类别分析DM(管理者)排名分析六、三维分析-货销售金额及销量分布情况商品退货率七、三维分析-场城市区域八、总结一、数据来源及理解 此次分析…

LeetCode 348. 判定井字棋胜负(计数)

文章目录1. 题目2. 解题1. 题目 请在 n n 的棋盘上&#xff0c;实现一个判定井字棋&#xff08;Tic-Tac-Toe&#xff09;胜负的神器&#xff0c;判断每一次玩家落子后&#xff0c;是否有胜出的玩家。 在这个井字棋游戏中&#xff0c;会有 2 名玩家&#xff0c;他们将轮流在棋…

C中几组指针

具体关于c指针说明可参考前面两篇文章。C中指针详解和C中复杂类型声明。 1、二维数组 下面就三种二维数组进行说明。 1: int **Ptr; 2: int *Ptr[ 5 ]; 3: int ( *Ptr )[ 5 ]; 以上三例都是整数的二维数组&#xff0c;都可以用形如 Ptr[ 1 ][ 1 ] 的方式访问其内容&#xff1b;…

LeetCode 694. 不同岛屿的数量(BFS/DFS+set)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给定一个非空01二维数组表示的网格&#xff0c;一个岛屿由四连通&#xff08;上、下、左、右四个方向&#xff09;的 1 组成&#xff0c;你可以认为网格的四周被海水包围。 请你计算这个网格中共有多少个形状不同的岛屿。 两个岛…

xcode 4.2开发 ——navigation controller 添加按钮

添加一个按钮 UIBarButtonItem *rightButton [[UIBarButtonItem alloc] initWithTitle:"Add" style:UITabBarSystemItemContacts target:self action:selector(clickSettings:)]; self.navigationItem.rightBarButtonItem rightButton; 新版本xcode不用release 添…

数据分析-书籍整理(二)

业务书籍 《数据化管理-洞悉零售及电子商务》讲解了关于零售和电商的一些知识&#xff0c;有很多实用案例。很有借鉴意义。 《游戏数据分析实战》游戏各个阶段的数据分析&#xff0c;方法&#xff0c;数据来源&#xff0c;案例等。 《增长黑客》这本书我看了两遍&#xff0c…

LeetCode 1516. Move Sub-Tree of N-Ary Tree(DFS)

文章目录1. 题目2. 解题1. 题目 Given the root of an N-ary tree of unique values, and two nodes of the tree p and q. You should move the subtree of the node p to become a direct child of node q. If p is already a direct child of q, don’t change anything. …

空气质量指数(AQI)分析与预测

文章目录前言一、背景Ⅰ数据来源Ⅱ 数据背景Ⅲ 分析目的二、数据探索性分析Ⅰ 数据类型Ⅱ 描述性统计Ⅲ 数据预处理1.缺失值处理1&#xff09;删除缺失值2&#xff09;均值/中值填充2.异常值处理3.重复值处理三、数据分析Ⅰ空气质量排名Ⅱ 全国空气质量1.全国空气质量等级统计2…

如果程序跑着跑着就崩溃了,查看内存

程序跑的时间长就发生中断。 启动任务管理器&#xff0c;选择“进程”选项卡&#xff0c;查看程序的内存。 发现程序运行的过程中内存不断增长。 那么原因可能是运行过程中不断地分配了新的内存而没有释放。 查找的方法是注释代码&#xff0c;然后看内存是不是还在增长&#xf…

LeetCode MySQL解题目录

已完成的 LeetCode MySQL 数据库题目。点击查看我的 LeetCode 算法解题目录。 已解决 123/123 - 简单 54 中等 51 困难 18 前置入门学习 MySQL 基本查询、条件查询、投影查询MySQL 排序、分页查询、聚合查询MySQL 多表查询、连接查询&#xff08;内连接、外连接&#xff09;…

Anaconda3使用过程中遇到的问题

文章目录数据可视化中文、负号显示Anaconda使用pyecharts安装方法方法一&#xff1a;pip install pyecharts安装方法二&#xff1a;清华镜像安装方法三&#xff1a;离线安装成功安装后遇到的问题成功安装却不能使用不能使用某一个图&#xff1a;bar\grid决策树sklearn.exceptio…

AliasDB:简单统一灵活的数据库访问库(支持MSSQL/MySQL/SQLite/Oracle/ODBC/OleDb)适用于中小型系统...

数据库访问各种规模的应用程序不可避免的操作&#xff0c;.NET对提供了简单方便统一的数据库访问类&#xff0c;并且通过Enterprise Lib提供了更为顶层的数据库访问库。在我的人个工作中&#xff0c;现在用得最多的就是通过“动码代码生成器”对一次性生成数据库访问接口&#…