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

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;
}

http://www.xdnf.cn/news/9034.html

相关文章:

  • 【QT】对话框dialog类封装
  • Unity UGUI 中 InputField 组件处理拖拽超出文本框边界时自动滚动内容的核心协程
  • java虚拟机2
  • 高速通信时代的信号编码利器-PAM4技术解析
  • HTML 文件路径完全指南:相对路径、绝对路径解析与引用技巧
  • git基础语法回顾
  • 重构损失(Reconstruction Loss) L mse​ 和 余弦相似性损失(Cosine Similarity Loss) L cos​
  • AI天气预报进入“大模型时代“:如何用Transformer重构地球大气模拟?
  • 基于cornerstone3D的dicom影像浏览器 第二十三章 mpr预设窗值与vr preset
  • 鸿蒙OSUniApp 开发的图文混排展示组件#三方框架 #Uniapp
  • 3d tiles高级样式设计与条件渲染
  • 基于小米Open-Vela开源系统的高级计算器实现 | 支持C++数学函数与 LVGL UI
  • 2025.05.09【Bubblemap】气泡图深入解析
  • 回调函数的使用
  • 鸿蒙OSUniApp 实现的一键清除输入框内容功能#三方框架 #Uniapp
  • Git切换历史版本及Gitee云绑定
  • 横向联邦学习、纵向联邦学习与联邦迁移学习是联邦学习的三大主要分支
  • 企微客服如何接入ai大模型
  • [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
  • Vue3 + Element Plus 实现用户管理模块
  • 计算机网络学习(八)——MAC
  • 3560. 木材运输的最小成本
  • 时序模型上——ARIMA/MA/AR
  • GaussDB资源冻结与解冻:精细化资源管理的实践与策略
  • Webpack和Vite构建工具有什么区别?各自的优缺点是什么
  • 华为OD机试真题——虚拟理财游戏(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 华为OD机试真题——数据分类(2025B卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 162. 寻找峰值
  • 【芯片设计中的跨时钟域信号处理:攻克亚稳态的终极指南】
  • Rust 1.0 发布十周年,梦想再度扬帆起航!