串的置换操作Replace(S,T,V)的算法
原文链接
编写一个实现串的置换操作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)的算法相关推荐
- 编写一个实现串的置换操作Replace(S,T,V)
串的置换操作 用串v置换出 串s中与t相同的所有非空串 /* 编写一个实现串的置换操作Replace(&S,T,V). */#include <stdio.h> //获取串长度 i ...
- c语言采用顺序存储结构存储串,试编写算法实现串的置换操作,串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版...
习题集解析部分 第4章 串 --<数据结构题集>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 课本源码合 ...
- c语言串的存储操作完整,c语言中关于串的相关知识以及操作
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 1 串的基本概念 串,即是字符串,由零个或者多个字符组成的有限序列,是数据元素为单个字符的特殊线性表.一般记为:S1=' ...
- cdr软件快速绘制串串灯的操作步骤图解
cdr软件快速绘制串串灯的操作步骤图解 很多朋友对cdr软件还不是很熟悉,也不知道怎么绘制串串灯,不过没关系,下面绿茶游戏园小编就分享cdr软件快速绘制串串灯的操作步骤图解,希望对刚接触cdr软件的朋 ...
- a - 数据结构实验之串一:kmp简单应用_串的两种模式匹配方式(BF/KMP算法)
串的两种模式匹配方式(BF/KMP算法) 前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最 ...
- 【论文阅读】基于自适应小生境和 k 均值操作的数据聚类差分进化算法
文章目录 原文题目 摘要 I. 引言 背景知识 Niching(小生境) 适应度共享 参考文献 提出 Niching Method 的动机 Niching Method 需要 Adaptive 的动机 ...
- Python从头/尾删除子符串的正确操作
一.说明 从某个时候发现python的字符串变量自带的strip()方法,除了可以删除字符串头尾的空格,还可以用来删除头尾的字符串觉得很好用.也就一直这么用,一直也没发现什么问题. 今天在修复一个bu ...
- lesson3-字符串及其常用操作
一.常用操作 1.按索引取值(正向取+反向取) :只能取 >>> name = 'adc defg' >>> name[0] 'a' 2.切片(顾头不顾尾,步长) ...
- python-字符串·文件·集合操作
原本这几个应该和列表·字典一起写的,只是我不是一起学的,所以就分开写了. 字符串操作: 特性:不可修改 一些基本语法: name.find('A') 查找A,找到返回其索引, 找不到返回-1 name ...
最新文章
- leetcode-225 队列实现栈
- 【H2645】帧内预测
- Intellij idea高效使用教程
- Python+selenium自动化:页面加载慢、超时加载情况下内容已经加载完毕的快速执行脚本解决方案,页面加载时间过长优化方案
- 【项目管理】敏捷宣言
- php追加记录到文件行首的办法
- IOS--工作总结--post上传文件(以流的方式上传)
- 网络计算机室电源线怎么布,网吧综合布线(电源和网络)经验谈
- Python input 函数 - Python零基础入门教程
- springMVC实体用注解管理,多对多 set集合元素排序问题 解决
- TIME_WAIT太多解决思路和方法
- linux下简单限制网卡速度
- day2在基础控制器里面¥this-request ,$this-response,把用户信息存在session,封装jsonResult返回值,Redis门面和Cache不一样...
- Hownbsp;tonbsp;Modifynbsp;anbsp;ATInbsp;Switchablenbsp;G…
- 【无人机系统】四轴飞行器及其UAV飞控系统 - 桂林电子科技大学信息科技学院 电子工程系(四 五 )
- cad转excel插件c2e_CAD表格互转EXCEL插件
- 真正优秀的人,更懂得尊重别人
- 小马哥----高仿苹果5se 机型界面图面面观,低配机型 谨防假冒
- css3 border边框斜线,CSS3 斜线分割布局
- 开源资产扫描系统-ARL资产灯塔系统