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,j;
	int flag;

	l1=strlen(str);
	l2=strlen(key);

	for(i=0;i<l1-l2;i++)
	{
		flag=1;
		for(j=0;j<l2;j++)
		{
			if(str[i+j]!=key[j])
			{
				flag=0;
				break;
			}
		}
		if(flag)//意思是找到了就直接返回,没有就i++继续找下一个位置
			return i;
	}
	return -1;
}

int main()
{
	char str[]="I have a dream have";
	char key[]="have";
	int kk=strfind(str,key);

	if(kk)
		printf("字符串%s在字符串%s中首次出现的位置是%d\n",key,str,kk);
	else
		puts("查找失败!!!!!!");
}
时间: 2024-10-14 11:50:52

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经典算法之字符串处理:字符串替换

语法: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

经典算法题-基础-替换字符串中的空格

目录 问题描述 解题思路 相关代码 问题描述 题目描述 请实现一个函数,把字符串中的每个空格替换成"%20" 要求 时间限制:1秒 空间限制:32768K 方法原型 public void replaceSpace(char[] str) 输入输出例子 输入:"Wa are happy" 输出:"We%20are%20happy" 解题思路 此题最自然的思路,就是从字符串的开始遍历,寻找空格,当遇到空格时,就将空格替换为"%20&quo

经典算法系列之:二分查找

1.前言 算法,在计算机中的地位,就相当于人类大脑的决策中枢系统,哪怕最简单的算法,其精妙的思维方式,都可以让人开启一扇新的视窗. 算法,它不仅仅只是狭义的用来解决计算机科学领域的问题,更是一种"思维方式".算法思维,是一种深度思考和创造的过程. 算法,只有真正理解了,而不只是所谓的知道,并将应用到生活.工作.学习等各个方面,它将一定使人受益终生. 2.原理推导 二分查找,前提是在排好序的基础上,每次查找,将数据集合分成两个部分,取中间索引数值与被查找的数值比较,逐次缩小查找范围,直到

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,不知道你看出来了没有? 二:解析 可能大家觉得有点复杂,不好理解,我们试着把这个大问题拆分掉,将"字符串

【从零学习经典算法系列】分治策略实例——二分查找

1.二分查找算法简介 二分查找算法是一种在有序数组中查找某一特定元素的搜索算法.搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束:如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较.如果在某一步骤数组 为空,则代表找不到.这种搜索算法每一次比较都使搜索范围缩小一半.折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn). 二分查找的优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且

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 测试输入包含若干测试用例,每个测试用例占一行,