​LeetCode解法汇总833. 字符串中的查找与替换

news2024/11/21 11:03:27

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

你会得到一个字符串 s (索引从 0 开始),你必须对它执行 k 个替换操作。替换操作以三个长度均为 k 的并行数组给出:indicessources,  targets

要完成第 i 个替换操作:

  1. 检查 子字符串  sources[i] 是否出现在 原字符串 s 的索引 indices[i] 处。
  2. 如果没有出现, 什么也不做 。
  3. 如果出现,则用 targets[i] 替换 该子字符串。

例如,如果 s = "abcd" , indices[i] = 0 , sources[i] = "ab", targets[i] = "eee" ,那么替换的结果将是 "eeecd" 。

所有替换操作必须 同时 发生,这意味着替换操作不应该影响彼此的索引。测试用例保证元素间不会重叠 

  • 例如,一个 s = "abc" ,  indices = [0,1] , sources = ["ab","bc"] 的测试用例将不会生成,因为 "ab" 和 "bc" 替换重叠。

在对 s 执行所有替换操作后返回 结果字符串 。

子字符串 是字符串中连续的字符序列。

示例 1:

输入:s = "abcd", indices = [0,2], sources = ["a","cd"], targets = ["eee","ffff"]
输出:"eeebffff"
解释:
"a" 从 s 中的索引 0 开始,所以它被替换为 "eee"。
"cd" 从 s 中的索引 2 开始,所以它被替换为 "ffff"。

示例 2:

输入:s = "abcd", indices = [0,2], sources = ["ab","ec"], targets = ["eee","ffff"]
输出:"eeecd"
解释:
"ab" 从 s 中的索引 0 开始,所以它被替换为 "eee"。
"ec" 没有从原始的 S 中的索引 2 开始,所以它没有被替换。

提示:

  • 1 <= s.length <= 1000
  • k == indices.length == sources.length == targets.length
  • 1 <= k <= 100
  • 0 <= indices[i] < s.length
  • 1 <= sources[i].length, targets[i].length <= 50
  • s 仅由小写英文字母组成
  • sources[i] 和 targets[i] 仅由小写英文字母组成

解题思路:

* 833. 字符串中的查找与替换

* 解题思路:

* 首先,把indices,sources,targets融合成一个数组list,按照indices的大小排序。

* 然后遍历这个,尝试使用list中indices的值去查找,看对应的位置是否匹配,如果匹配,则需要插入两部分:

* 1.indice之前的部分。

* 2.替换为targets的部分。

* 然后更新index为当前位置即可。

* 如果不匹配,则无需更新,因为下次的成功匹配会填充index到当前匹配位置所有的值。

代码:

class Solution833
{
public:
    string findReplaceString(string s, vector<int> &indices, vector<string> &sources, vector<string> &targets)
    {
        vector<pair<int, pair<string, string>>> list;
        for (int i = 0; i < indices.size(); i++)
        {
            list.push_back(make_pair(indices[i], make_pair(sources[i], targets[i])));
        }
        sort(list.begin(), list.end(), [](pair<int, pair<string, string>> pair1, pair<int, pair<string, string>> pair2)
             { return pair2.first - pair1.first > 0; });

        string out;
        int index = 0;
        for (auto item : list)
        {
            // 如果相同,则填入替换的
            string olds = s.substr(item.first, min(item.second.first.size(), s.size() - item.first));
            if (olds == item.second.first)
            {
                out.append(s.substr(index, item.first - index));
                out.append(item.second.second);
                index = item.first + item.second.first.size();
            }
        }
        out.append(s.substr(index, s.size() - index));
        return out;
    }
};

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

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

相关文章

无服务器架构发布啦!

导读Serverless 1.15.2 已发布。The Serverless Framework (无服务器架构&#xff09;允许你自动扩展、按执行付费、将事件驱动的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure&#xff0c;并且正在扩展以支持其他云提供商。 Serverless 降低了…

无人直播系统究竟是怎么做的?效果如何?

继数字人直播火热之后&#xff0c;或者说数字人直播的热潮还未下来&#xff0c;无人直播又再次刷新了我们的认知&#xff0c;让我们的眼光不得不从数字人身上转移到无人直播上来&#xff0c;因为&#xff0c;跟数字人直播相比&#xff0c;无人直播的成本更低&#xff0c;它更加…

【Spring源码】Spring扩展点及顺序

Spring扩展点及顺序 01-调用BeanFactoryPostProcessor的构造器 02-调用了BeanFactoryPostProcessor的postProcessBeanFactory 03-调用了BeanPostProcessor构造器 04-调用InstantiationAwareBeanPostProcessor构造方法 05-调用了InstantiationAwareBeanPostProcessor接口的Befo…

拆分pdf文件最简单的方法?推荐这种拆分方法

拆分pdf文件最简单的方法&#xff1f;PDF文件拆分是指将一个PDF文件拆分成多个单独的文件。这种操作通常用于将大型PDF文档拆分成多个小文档&#xff0c;以便更方便地管理和共享。例如&#xff0c;如果你需要将一个大型PDF文档发送给多个人&#xff0c;但不希望他们看到整个文档…

mysql 索引 区分字符大小写

mysql 建立索引&#xff0c;特别是unique索引&#xff0c;是跟字符集、字符排序规则有关的。 对于utf8mb4_0900_ai_ci来说&#xff0c;0900代表Unicode 9.0的规范&#xff0c;ai表示accent insensitivity&#xff0c;也就是“不区分音调”&#xff0c;而ci表示case insensitiv…

途乐证券-越跌越买!港股又回调,资金却坚定买入,行情何时到来?

港股重复震动。 8月14日&#xff0c;港股三大指数再次跌落&#xff0c;截至收盘&#xff0c;恒生指数跌1.58%&#xff0c;报18773.55点&#xff0c;恒生科技指数跌1.52%&#xff0c;国企指数跌1.79%。 进入8月以来&#xff0c;港股继续跌落&#xff0c;恒生指数单月跌落6.5%&a…

德事隆® Txron®品牌介绍

德事隆 Txron 螺钉品牌介绍 一&#xff0e;品牌介绍&#xff1a; 创始于美国的百年紧固品牌——德事隆 Txron。 上世纪80年代初&#xff0c;德事隆品牌强势登场&#xff0c;采用美标及澳洲标准&#xff0c;主打高端防腐紧固件…

集群、负载均衡集群、高可用集群简介,LVS工作结构、工作模式、调度算法和haproxy/nginx模式拓扑介绍

一.集群的定义 1.定义 2.分类 &#xff08;1&#xff09;负载均衡集群&#xff08;LBC/LB&#xff09; &#xff08;2&#xff09;高可用集群&#xff08;HAC&#xff09; 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的…

无涯教程-Perl - sethostent函数

描述 该函数应在首次调用gethostent之前调用。 STAYOPEN参数是可选的,在大多数系统上未使用。 当gethostent()检索主机数据库中下一行的信息时,然后sethostent设置(或重置)枚举到主机条目集的开头。 语法 以下是此函数的简单语法- sethostent STAYOPEN返回值 此函数不返回…

opencv进阶02-在图像上绘制多种几何图形

OpenCV 提供了方便的绘图功能&#xff0c;使用其中的绘图函数可以绘制直线、矩形、圆、椭圆等多种几何图形&#xff0c;还能在图像中的指定位置添加文字说明。 OpenCV 提供了绘制直线的函数 cv2.line()、绘制矩形的函数 cv2.rectangle()、绘制圆的函数cv2.circle()、绘制椭圆的…

高忆管理:策略:短期利空落地 市场有望企稳回升

高忆管理指出&#xff0c;基于A股商场出资环境分析&#xff0c;尤其是当时商场存量博弈为主的布景下&#xff0c;主张重视以下“21”主线轮动&#xff1a;&#xff08;1&#xff09;国产科技代替立异&#xff1a;电子&#xff08;半导体、消费电子&#xff09;、通信&#xff0…

人工智能在监控系统中的预测与优化:提升效率和响应能力

引言&#xff1a;人工智能的发展给监控系统带来了新的可能性&#xff0c;通过分析历史监控数据和其他相关数据&#xff0c;人工智能可以预测未来可能发生的事件&#xff0c;如交通拥堵、安全隐患等&#xff0c;并帮助优化监控系统的配置和资源分配。这种预测和优化的能力可以提…

Antv/G2 柱状图

Antv/G2 教程 G2 是一套基于图形语法理论的可视化底层引擎&#xff0c;以数据驱动&#xff0c;提供图形语法与交互语法&#xff0c;具有高度的易用性和扩展性。使用 G2&#xff0c;无需关注图表各种繁琐的实现细节&#xff0c;一条语句即可使用 Canvas 或 SVG 构建出各种各样的…

一般股票量化交易接口需要用到哪些编程语言?

股票量化交易接口可以使用多种编程语言进行开发和调用。以下是一些常用的编程语言&#xff1a; 1. Python&#xff1a;Python是一种脚本语言&#xff0c;广泛应用于量化交易领域。它有丰富的第三方库和工具&#xff0c;如Pandas、NumPy和pyalgotrade等&#xff0c;可用于数据分…

nodejs+vue+elementui+express智慧社区小区物业管理系统的设计与实现_2p760

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 前端nodejsvueelementuiexpress vue的文件结构其实就是一个index.html 中间的内容&#xff0c;用的是vue&#xff0c;但最终都会转…

问道管理:县域商业3年行动计划发布 城中村改造有望带动多行业需求

昨日&#xff0c;两市股指低开低走&#xff0c;三大股指早盘均跌超1%&#xff0c;午后跌幅有所收窄&#xff1b;到收盘&#xff0c;沪指跌0.34%报3178.43点&#xff0c;深成指跌0.5%报10755.14点&#xff0c;创业板指跌1.02%报2164.69点&#xff1b;两市算计成交7419亿元&#…

海国图志#2:这一周难忘瞬间,吐血整理,不得不看

这里记录每周值得分享的新闻大图&#xff0c;周日发布。 文章以高清大图呈现&#xff0c;解说以汉语为主&#xff0c;英语为辅&#xff0c;英语句子均来自NYTimes、WSJ、The Guardian等权威媒体原刊。 存档时段&#xff1a;20230807-20230813 葡萄牙&#xff0c;雷根戈 一架直升…

这四种订货系统不能选(三):不能定制开发

在企业的运营过程中&#xff0c;需求会不断变化。如果不能随着运营需求的变化而进行定制开发的订货系统&#xff0c;那么它可能会变得鸡肋。 一个不能随需求变化定制开发的订货系统可能无法满足企业在不同阶段的需求和业务流程。企业在运营过程中可能需要新增、修改或调整一些功…

什么开放式耳机音质好?值得推荐的开放式耳机分享

与封闭式耳机相比&#xff0c;开放式耳机具有更为自然、真实的音质&#xff0c;能够更好地还原音乐现场的声音环境。以下是几款值得推荐的开放式耳机&#xff0c;都来看看有哪些吧。 推荐一&#xff1a;NANK南卡00压开放式耳机 点评&#xff1a;体验最好的开放式耳机没有之一…

K8S系列四:服务管理

写在前面 本文是K8S系列第四篇&#xff0c;主要面向对k8s新手同学。阅读本文需要读者对k8s的基本概念&#xff0c;比如Pod、Deployment、Service、Namespace等基础概念有所了解&#xff0c;尚且不了解的同学推荐先阅读本系列的第一篇文章《K8S系列一&#xff1a;概念入门》[1]…