ACM经典算法之字符串处理:字符串替换

语法:replace(char str[],char key[],char swap[]);

参数:

str[]:在此源字符串进行替换操作

key[]:被替换的字符串,不能为空串

swap[]:替换的字符串,可以为空串,为空串表示在源字符中删除key[]

返回值:null

注意:默认str[]长度小于1000,如否,重新设定设定tmp大小

需要 string.h

源程序:

#include<stdio.h>
#include<string.h>

void replace(char str[],char key[],char swap[])
{
	int l1,l2,l3;
	int i,j;
	int flag;

	char tmp[1000];
	l1=strlen(str);
	l2=strlen(key);
	l3=strlen(swap);

	for(i=0;i<=l1-l2;i++)
	{
		flag=1;
		for(j=0;j<l2;j++)//注意是小写的l而不是数字1
		{
			if(str[i+j]!=key[j])
			{
				flag=0;
				break;
			}
		}
		if(flag)
		{
			strcpy(tmp,str);
			strcpy(&tmp[i],swap);
			strcpy(&tmp[i+l3],&str[i+l2]);
			strcpy(str,tmp);
			i+=l3-1;
			l1=strlen(str);
		}
	}
}
int main()
{
	char str[] ="I have a dream";
	char key[] ="have";
	char swap[]="Love";

	printf("原字符串是%s\n被替换的子串%s,替换为%s\n",str,key,swap);
	replace(str,key,swap);

	puts("替换后的字符串是:");
	puts(str);

	return 0;
}

时间: 2024-10-28 10:40:23

ACM经典算法之字符串处理:字符串替换的相关文章

ACM经典算法之字符串处理:字符串截取

语法:mid(char str[],int start,int len,char strback[]) 参数: str[]:操作的目标字符串 start:从第start个字符串开始,截取长度为len的字符 len:从第start个字符串开始,截取长度为len的字符 strback[]:截取的到的字符 返回值: 0:超出字符串长度,截取失败:1:截取成功 #include<stdio.h> #include<string.h> int mid(char str[],int start

ACM经典算法之字符串处理:字符串查找

语法:result=strfind(char str[],char key[]); 参数: str[]:在此源字符串进行查找操作 key[]:被查找的字符串,不能为空串 返回值: 如果查找成功,返回key在str中第一次出现的位置,否则返回-1 注意:需要 string.h 源程序: #include<stdio.h> #include<string.h> //查找字符串函数 int strfind(char str[],char key[]) { int l1,l2; int i

JS经典算法

JS经典算法: // 1.字符串颠倒 str.split('').reverse().join('') // 2.不借助中间量,颠倒a.b a=[b,b=a][0] // 3.快速获取数组的最大值.最小值 Array.prototype.max = function () { return Math.max.apply(null, this) } Array.prototype.min = function () { return Math.min.apply(null, this) } //

经典算法题每日演练——第五题 字符串相似度

原文:经典算法题每日演练--第五题 字符串相似度 这篇我们看看最长公共子序列的另一个版本,求字符串相似度(编辑距离),我也说过了,这是一个非常实用的算法,在DNA对比,网 页聚类等方面都有用武之地. 一:概念 对于两个字符串A和B,通过基本的增删改将字符串A改成B,或者将B改成A,在改变的过程中我们使用的最少步骤称之为“编辑距离”. 比如如下的字符串:我们通过种种操作,痉挛之后编辑距离为3,不知道你看出来了没有? 二:解析 可能大家觉得有点复杂,不好理解,我们试着把这个大问题拆分掉,将"字符串

在Vi里面实现字符串的批量替换

在Vi里面实现字符串的批量替换. a. 文件内全部替换: %s#abc#def#g(用def替换文件中所有的abc) 例如把一个文本文件里面的"linuxidc.com"全部替换成"linuxidc.net": :%s#linuxidc.com#xwen.net#g (如文件内有#,可用/替换,比如:%s/linuxidc.com/xwen.net/g) b. 文件内局部替换: 把10行到50行内的"abc"全部替换成"def"

JAVA-从题目看算法,将输入字符串进行排序并输出

来看一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc" 则程序会输出:abc acb bac bca cab cba 这是一个典型的可用递归算法来实现的例子,我们来看一下利用递归的2种不同解法. 1.典型递归元素交换的算法 (1)算法的出口在于:low=high也就是现在给出的排列元素只有一个时. (2)算法的逼近过程:先确定排列的第一位元素,也就是循环中i所代表的元素. package test; import java.uti

[ACM] hdu 1228 A+B (字符串处理)

A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11543    Accepted Submission(s): 6699 Problem Description 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试用例,每个测试用例占一行,

.net mvc RazorEngine 字符串razor参数替换

在.net中有一个比较好的字符串参数替换的方案RazorEngine推荐大家看看原网站,然后做个小联系然后你就懂啦 首先呢得下载一个吧, vs中tools-> Library Paging Manager->Manager Nuget 在然后呢Install-Package RazorEngine 等待搜索结束吧,然后下载下来两个dll RazorEngine.dll  没说的一定要引用到工程里面的 System.Web.Razor.dll 这个dll工程里面是引用了的  多以会提示替换,别犹

No.32 将字符串进行内容替换

将字符串进行内容替换.注意:修改后变成新字符串,并不是将原字符串直接修改. String replace(oldChar,newChar); String replace(oldstring,newstring);