原文链接

编写一个实现串的置换操作Replace(&S,T,V)的算法。
StringType是串的一个抽象数据类型,它包含以下6种基本操作:

void InitStr(StringType &s);// 初始化s为空串。
void StrAssign(StringType &t, StringType s);// 将s的值赋给t。s的实际参数是串变量。
int StrCompare(StringType s, StringType t);// 比较s和t。若s>t,返回值>0;若s=t,返回值=0;若s<t,返回值<0。
int StrLength(StringType s);// 返回s中的元素个数,即该串的长度。
StringType Concat(StringType &s, StringType t); // 返回由s和t联接而成的新串。
StringType SubString(StringType s, int start, int len);// 当1<=start<=StrLength(s)且0<=len<=StrLength(s)- start+1时,// 返回s中第start个字符起长度为len的子串,否则返回空串。

实现函数如下:

void Replace(StringType &S, StringType T, StringType V)
//以串 v 置换串 s 中出现的所有和串 t 相同的非空串
{int n,m,k,i;StringType sub;InitStr(sub);n = StrLength(S);m = StrLength(T);k = StrLength(V);i = 1;while(i <= n-m+1){//将串S中的子串逐个提取出来与串T进行匹配StrAssign(sub,SubString(S,i,m));//将串S中的子串赋值给subif(StrCompare(sub,T) == 0){//sun和T匹配相等时InitStr(sub);//初始化subConcat(sub,SubString(S,1,i-1));//将匹配相等的子串的前面的子串连接到串sub后Concat(sub,V);//将替换串连接到串sub后Concat(sub,SubString(S,m+i,n-(m+i)+1));//将匹配相等的子串的后面的子串连接到串sub后StrAssign(S,sub);//将sub赋值给Si += k;//从匹配串之后的一个位置重新开始匹配n = StrLength(S);//操作完一次之后,串S已经改变,更新S的长度}else{//如果不匹配,就i向后移动i++;}}
}

串的置换操作Replace(S,T,V)的算法相关推荐

  1. 编写一个实现串的置换操作Replace(S,T,V)

    串的置换操作 用串v置换出 串s中与t相同的所有非空串 /* 编写一个实现串的置换操作Replace(&S,T,V). */#include <stdio.h> //获取串长度 i ...

  2. c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版...

    习题集解析部分 第4章 串 --<数据结构题集>-严蔚敏.吴伟民版 源码使用说明  链接☛☛☛<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合 ...

  3. c语言串的存储操作完整,c语言中关于串的相关知识以及操作

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 1 串的基本概念 串,即是字符串,由零个或者多个字符组成的有限序列,是数据元素为单个字符的特殊线性表.一般记为:S1=' ...

  4. cdr软件快速绘制串串灯的操作步骤图解

    cdr软件快速绘制串串灯的操作步骤图解 很多朋友对cdr软件还不是很熟悉,也不知道怎么绘制串串灯,不过没关系,下面绿茶游戏园小编就分享cdr软件快速绘制串串灯的操作步骤图解,希望对刚接触cdr软件的朋 ...

  5. a - 数据结构实验之串一:kmp简单应用_串的两种模式匹配方式(BF/KMP算法)

    串的两种模式匹配方式(BF/KMP算法) 前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最 ...

  6. 【论文阅读】基于自适应小生境和 k 均值操作的数据聚类差分进化算法

    文章目录 原文题目 摘要 I. 引言 背景知识 Niching(小生境) 适应度共享 参考文献 提出 Niching Method 的动机 Niching Method 需要 Adaptive 的动机 ...

  7. Python从头/尾删除子符串的正确操作

    一.说明 从某个时候发现python的字符串变量自带的strip()方法,除了可以删除字符串头尾的空格,还可以用来删除头尾的字符串觉得很好用.也就一直这么用,一直也没发现什么问题. 今天在修复一个bu ...

  8. lesson3-字符串及其常用操作

    一.常用操作 1.按索引取值(正向取+反向取) :只能取 >>> name = 'adc defg' >>> name[0] 'a' 2.切片(顾头不顾尾,步长) ...

  9. python-字符串·文件·集合操作

    原本这几个应该和列表·字典一起写的,只是我不是一起学的,所以就分开写了. 字符串操作: 特性:不可修改 一些基本语法: name.find('A') 查找A,找到返回其索引, 找不到返回-1 name ...

最新文章

  1. leetcode-225 队列实现栈
  2. 【H2645】帧内预测
  3. Intellij idea高效使用教程
  4. Python+selenium自动化:页面加载慢、超时加载情况下内容已经加载完毕的快速执行脚本解决方案,页面加载时间过长优化方案
  5. 【项目管理】敏捷宣言
  6. php追加记录到文件行首的办法
  7. IOS--工作总结--post上传文件(以流的方式上传)
  8. 网络计算机室电源线怎么布,网吧综合布线(电源和网络)经验谈
  9. Python input 函数 - Python零基础入门教程
  10. springMVC实体用注解管理,多对多 set集合元素排序问题 解决
  11. TIME_WAIT太多解决思路和方法
  12. linux下简单限制网卡速度
  13. day2在基础控制器里面¥this-request ,$this-response,把用户信息存在session,封装jsonResult返回值,Redis门面和Cache不一样...
  14. Hownbsp;tonbsp;Modifynbsp;anbsp;ATInbsp;Switchablenbsp;G…
  15. 【无人机系统】四轴飞行器及其UAV飞控系统 - 桂林电子科技大学信息科技学院 电子工程系(四 五 )
  16. cad转excel插件c2e_CAD表格互转EXCEL插件
  17. 真正优秀的人,更懂得尊重别人
  18. 小马哥----高仿苹果5se 机型界面图面面观,低配机型 谨防假冒
  19. css3 border边框斜线,CSS3 斜线分割布局
  20. 开源资产扫描系统-ARL资产灯塔系统

热门文章

  1. 关于const的拙见
  2. Leetcode | Insertion Sort List | 初出茅庐
  3. TypeScript (TS
  4. docker简介及使用国内镜像源安装docker
  5. 学习人工智能需要掌握哪些基础知识,需要具备哪些数学和编程技能?
  6. 计算机在职博士好毕业么,北京大学计算机在职博士生毕业以后学历会提升么
  7. CDH框架搭建【小白易上手】
  8. linux软硬件系统观察,Linux系统在信息社会的发展
  9. STC89C52RC内部EEPROM的读写
  10. background and notification of local