字符串朴素匹配C++实现

/*
 *字符串的朴素匹配
 通过每一个字母对应着主串
 进行一次的进行比较,知道
 其中的一个串的所有字母都匹配成功
 */
#include <iostream>
#include <cstdio>
#include <malloc.h>
#include <cstring>
using namespace std;
int index(char *a, char *b)
{
	int tarindex = 0;
	while(a[tarindex] != '\0')
	{
			int tarlen = tarindex;
			int patlen;
			for(patlen = 0; b[patlen] != 0; patlen++)
			{
					if(a[tarlen++] != b[patlen])
					{
						break;
					}
			}
			if(b[patlen] == '\0')
			{
				return tarindex;
			}
			tarindex++;
	}
	return -1;
}
int main()
{
	char *a;
	char *b;
	a = (char*)malloc(sizeof(char));
	b = (char*)malloc(sizeof(char));
	gets(a);
	gets(b);
	cout<<"第 "<<index(a, b) + 1<<" 个字母开始匹配!"<<endl;
	return 0;
}

时间: 2024-10-02 23:31:02

字符串朴素匹配C++实现的相关文章

串的匹配:朴素匹配&amp;amp;KMP算法

引言 字符串的模式匹配是一种经常使用的操作. 模式匹配(pattern matching),简单讲就是在文本(text,或者说母串str)中寻找一给定的模式(pattern).通常文本都非常大.而模式则比較短小.典型的样例如文本编辑和DNA分析. 在进行文本编辑时,文本一般是一段话或一篇文章,而模式则经常是一个单词.若是对某个指定单词进行替换操作,则要在整篇文章中进行匹配,效率要求肯定是非常高的. 模式匹配的朴素算法 最简单也最easy想到的是朴素匹配.何为朴素匹配,简单讲就是把模式串跟母串从左

流动python - 字符串KMP匹配

首先我们看一下简单的字符串匹配. 你可以把文本字符串s固定,模式字符串p从s对齐的左边缘,作为承担部分完全一致,匹配成功,失败将是模式字符串p整体向右1地点,继续检查对齐部分,重复. #朴素匹配 def naive_match(s, p): m = len(s); n = len(p) for i in range(m-n+1):#起始指针i if s[i:i+n] == p: return True return False 关于kmp算法,讲的最好的当属阮一峰的<字符串匹配的KMP算法>.

串的匹配:朴素匹配&amp;KMP算法

引言 字符串的模式匹配是一种常用的操作.模式匹配(pattern matching),简单讲就是在文本(text,或者说母串str)中寻找一给定的模式(pattern).通常文本都很大,而模式则比较短小.典型的例子如文本编辑和DNA分析.在进行文本编辑时,文本通常是一段话或一篇文章,而模式则常常是一个单词.若是对某个指定单词进行替换操作,则要在整篇文章中进行匹配,效率要求肯定是很高的. 模式匹配的朴素算法 最简单也最容易想到的是朴素匹配.何为朴素匹配,简单讲就是把模式串跟母串从左向右或从右向左一

java 自己实现字符串的匹配

package com.learn.algorithm.Str; /** * 自己实现 字符串的匹配 * @author Jiekun.Cui * */ public class SString { public static void main(String[] args) { System.out.println(indexOf("china","in",0)); } /** * 字符串匹配算法 -- 查找s2 在s1 中的位置 * @param s1 * @p

字符串的匹配

字符串的匹配 时间限制: 1 Sec  内存限制: 128 MB 题目描述 相信大家都做许多的字符串匹配问题了,一天,503集训室的俊哥突然想出了新点子.现在给你两个字符串a,b求最长公共子串.对于是字符串匹配大师的你来说,这个再简单不过了.但是,如果现在你有k次修改机会,每次你都可以选择其中某个串的某个位置.将其修改成任意字符. 你需要合理使用这k次修改机会,使得修改后字符串的最长公共子串最长.相信这个对于你来说也很简单. 输入 题目中有多组数据,每组数据的第一行为一个整数k.表示修改次数.

C++实现的字符串模糊匹配

C++基本没有正则表达式功能,当然像Boost里提供了正则.本文来源于博客园园友的一篇文章,请看: C/C++ 字符串模糊匹配 很早之前就看过这篇文章,原作者的需求很明确.代码实现也很好. 之所以又写这篇文章,是因为原作者只介绍了在Linux系统下直接调用系统函数fnmatch即可实现,而没有考虑在Windows在的使用. 本人这周看了下Google-glog代码,恰巧发现了一个类似fnmatch的简单实现,因此综合起来提供了一个跨平台的接口. 直接拿原作者的需求为例(再次感谢原作者大熊先生,我

java.sql.SQLException:ORA-01861:文字和格式字符串不匹配

1.错误描述 java.sql.SQLException:ORA-01861:文字和格式字符串不匹配 2.错误原因 字段名为statis_date在数据库中存储的数据类型是Date,而在Java中拼接SQL语句时传参数却是字符串类型,类型不匹配,导致出错 3.解决办法 (1)修改数据库中该字段的数据类型 这种方法不太建议 (2)修改拼接时传参数方式,将参数利用to_date转换

Oracle添加数据报文字与格式字符串不匹配错误

今天在学习Oracle时碰到一个错:文字与格式字符串不匹配. 我在Oracle数据库中创建了一张表: --创建员工表employee create table employee ( empon number(4) not null,--员工编号 ename varchar2(10),--员工姓名 job varchar2(9),--员工工种 mgr number(4),--上级经理编号 hiredate date,--受雇日期 sal number(7,2),--员工薪水 comm number

js正则实现从一段复杂html代码字符串中匹配并处理特定信息

js正则实现从一段复杂html代码字符串中匹配并处理特定信息 问题: 现在要从一个复杂的html代码字符串(包含各种html标签,数字.中文等信息)中找到某一段特别的信息(被一对“|”包裹着),并对他进行加粗.加下滑线处理. 解决思路: 1.用正则匹配“|”出现的次数,处理刚好出现2次的(html字符串中一般不会含有这个字符) 2.使用正则分组,获取“|”之间的内容,并进行替换(添加样式) 代码: function specialDeal(){ htmlStr = htmlStr.replace