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

c++算法题

题目

字符串的替换操作 replace(String &s, String &t, String &v) 是指:

若t是s的子串,则用串v替换串t在串s中的所有出现;若t不是s的子串,则串s不变。例如,若串s为“aabbabcbaabaaacbab”,串t为“bab”,串v为“abdc”,则执行replace操作后,串s中的结果为“aababdccbaabaaacabdc”。试利用字符串的基本运算实现这个替换操作。

分析

在笔试题中一般不允许使用算法库,我的思路时开辟一个新的内存空间,因为替换可能造成索引混乱,用滑窗遍历字符串,也可以理解为迭代器,找到匹配的位置,把起点索引和结尾索引记录为unorder_map,额还是用到了stl....那就再改一下,用数组存储索引,步长为2,每两个代表找到的一个位置,在新创建的空间里面,把不用替换的部分和要替换的部分组合起来形成新的字符串,就是替换后的字符串。笔试题不会这么复杂吧,这么复杂我选择不写耽误时间。

实现

上面那个量大了,笔试那样写时间够不够都不好说,就改用string的find和replace实现。自定义全局的替换函数,每次找到的字符串直接进行替换然后更新查找的起始位置

#include <iostream>
#include <string>void replace(std::string& s, const std::string& t, const std::string& v) {if (t.empty()) return; // 空子串直接返回size_t start_pos = 0;while ((start_pos = s.find(t, start_pos)) != std::string::npos) {s.replace(start_pos, t.length(), v);start_pos += v.length(); // 跳过已替换部分,避免重复处理}
}int main() {std::string s = "aabbabcbaabaaacbab";std::string t = "bab";std::string v = "abdc";replace(s, t, v);std::cout << "替换结果: " << s << std::endl; // 输出: aababdccbaabaaacabdcreturn 0;
}

相关文章:

  • 红海云荣膺2025人力资源科技影响力品牌30强
  • AI时代新词-机器学习即服务(MLaaS)
  • python:机器学习(KNN算法)
  • 2021年江西工业互联网大赛———工业固件分析
  • 【Linux系统】Linux基础指令(一)
  • java8函数式接口(函数式接口的匿名实现类作为某些方法的入参)
  • MySQL 9.3 超详细下载安装教程(Windows版)附图文说明
  • 通用寄存器 专用寄存器
  • 解决leetcode第3509题.最大化交错和为K的子序列乘积
  • Odoo列表视图的控制标签<control>详解
  • 卷积神经网络(CNN)模型
  • 二十八、面向对象底层逻辑-SpringMVC九大组件之ViewResolver接口设计
  • VB.NET与SQL连接问题解决方案
  • [Java实战]SpringBoot集成SNMP实现OID数据获取:原理、实践与测试(三十三)
  • 自动编码器 潜在空间 Autoencoders 视频截图
  • 数控滑台技术革新:提升生产效率的关键
  • VPet虚拟桌宠,一款桌宠软件,支持各种互动投喂等. 开源免费并且支持创意工坊
  • 系统分析师-考后总结
  • 华为云Flexus+DeepSeek征文 | Flexus X实例助力 Dify-LLM 一键部署:性能跃升与成本优化的革新实践
  • 面试刷题4:java(核心+acm模式)
  • 计算机网站建设/seo在线优化工具
  • 贵州网站推广公司/视频网站建设
  • 怎么做公司的中英文网站/广州百度seo 网站推广
  • 邯郸网站建设唯辛ls15227/免费推广网
  • wordpress banner文字/seo关键词排名优化app
  • 网站开发行业怎么样/河南优化网站