当前位置: 首页 > news >正文

2023-08-15力扣每日一题

链接:

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

题意:

n组操作,其中第i组:

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

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

解:

由于要对原字符串进行判断所以我们不对字符串进行直接修改(当然好像弄一个偏移量也可以写原地算法嗷)

由于每组操作互不影响,所以我们按原字符串的下标进行排序,然后从头到尾处理就行,方便字符串拼接和字符串匹配

实际代码:

#include<bits/stdc++.h>
using namespace std;
string findReplaceString(string s, vector<int>& indices, vector<string>& sources, vector<string>& targets)
{string ans;int n=indices.size();map<int,int>mp;for(int i=0;i<n;i++) mp[indices[i]]=i;auto it=mp.begin();for(int i=0;i<s.size();i++){if(i==it->first){int mao=s.find(sources[it->second],i);if(mao==i){ans.append(targets[it->second]);i+=sources[it->second].size()-1;}it++;}else ans+=s[i];}return s; 
}
int main()
{string s;cin>>s;int n;cin>>n;vector<int> indices;vector<string> sources,targets;while(n--){int t;string a,b;cin>>t>>a>>b;indices.push_back(t);sources.push_back(a);targets.push_back(b);}string ans=findReplaceString(s,indices,sources,targets);cout<<ans<<endl;return 0;
}

限制:

  • 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] 仅由小写英文字母组成
http://www.lryc.cn/news/125959.html

相关文章:

  • Java单例模式详解(五种实现方式)
  • 【javaweb】学习日记Day1 - HTML CSS入门
  • 贴吧照片和酷狗音乐简单爬取
  • Databend 开源周报第 106 期
  • Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
  • IL汇编ldc指令学习
  • 【Redis基础篇】浅谈分布式系统(一)
  • CSS中的calc()函数有什么作用?
  • 由浅入深学习Tapable
  • YOLOv5白皮书-第Y6周:模型改进
  • word之插入尾注+快速回到刚才编辑的地方
  • Qt扫盲-QTableView理论总结
  • 从外部访问K8s中Pod的五种方式
  • 什么是A股交易接口_(股票交易c接口)开发原理
  • STM32F4X NVIC中断概念
  • 关于consul的下载方法
  • 应用在汽车前照灯系统中的环境光传感芯片
  • Python Flask+Echarts+sklearn+MySQL(评论情感分析、用户推荐、BI报表)项目分享
  • 开源项目-高校自动排课系统
  • IP网络广播系统草坪音箱景区系统防水石头,草坪音箱的应用
  • 拒绝摆烂!C语言练习打卡第二天
  • 第四章:前端框架Vue基础入门
  • 企业权限管理(十三)-用户关联角色操作
  • 深入理解Vue 3.0x中的Suspense和异步组件
  • Ajax 笔记(三)—— Ajax 原理
  • el-tree通过default-expand-all动态控制展开/折叠
  • 基于Bsdiff差分算法的汽车OTA升级技术研究(学习)
  • 如何使用CSS实现一个纯CSS的滚动条样式?
  • 使用维纳过滤器消除驾驶舱噪音(Matlab代码实现)
  • vue所有UI库通用)tree-select 下拉多选(设置 maxTagPlaceholder 隐藏 tag 时显示的内容,支持鼠标悬浮展示更多