数据结构之串及其模式匹配

这里说了些什么?

在这个章节讲了串的结构、构造串的方法、各种对串的操作以及从串的匹配的算法。

  1. 串的结构也是千奇百态,有直接按顺序存储的结构,有链条式的存储结构以及基于顺序存储结构和链条结构的合体的名字索引表。
  2. 串的操作有点像C++里面有个库叫sctring的操作,函数名字都一样的,然后就是告诉我们是怎么实现的。
  3. 模式匹配算法是传统的BF算法(一个一个比失败了就挪动一个位置继续比)和KMP算法(牛皮的跳跃式匹配)。关于这个算法我做了一个ppt但是好像不好直接上传,我就上传到了百度云制作了一个链接,链接如下:https://pan.baidu.com/s/1-Sd8K0PLZGfWOthXfSImWA
  4. Friends, never never never give up!

原文地址:https://www.cnblogs.com/dreamworldclark/p/9936582.html

时间: 2024-11-13 06:47:58

数据结构之串及其模式匹配的相关文章

数据结构例程——串的模式匹配(KMP算法)

本文针对数据结构基础系列网络课程(4):串中第5课时串的模式匹配(KMP算法). 问题:串的模式匹配 KMP算法: #include <stdio.h> #include "sqString.h" void GetNext(SqString t,int next[]) /*由模式串t求出next值*/ { int j,k; j=0; k=-1; next[0]=-1; while (j<t.length-1) { if (k==-1 || t.data[j]==t.d

(原创)数据结构之利用KMP算法解决串的模式匹配问题

给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串S中出现的位置. 输入格式: 输入有两行: 第一行是主串S: 第二行是模式T. 输出格式: 输出相匹配的子串中的第一个字符在主串S中出现的位置.若匹配失败,输出0. 输入样例: 在这里给出一组输入.例如: aaaaaba ba 输出样例: 在这里给出相应的输出.例如: 6 解题思路:串的模式匹配有两种:一种是BF算法,一种是KMP算法:基于这道题给的数

KMP 解决串的模式匹配问题

首先贴三段代码,一组是回溯法,暴力求解,另外两个是KMP串模式匹配 /* 回溯法字符串匹配算法就是用一个循环来找出所有有效位移, 该循环对n-m+1个可能的位移中的每一个index值,检查条件为P[0-m-1]= S[index-index+m-1] (因为模式串的长度是m,索引范围为0-m-1).该算法思维比较简单(但也常被一些公司做为面试题), 很容易分析出本算法的时间复杂度为O(pattern_length*target_length) int search(char const*, in

串的模式匹配

在串的各种操作中,串的模式匹配是经常用到的一个算法.串的模式匹配也称为子串的定位操作,即查找子串在主串中出现的位置. 1.经典的模式匹配算法Brute-Force. 2.KMP算法. #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAXSIZE 60 typedef struct { char ch[MAXSIZE]; int length; }SeqString; #include

字符串及串的模式匹配

一.串的比较比较的是组成串的字符之间的编码(Unicode.ASCII)二.串的创想数据类型串的逻辑结构和线性表相似,不同之处在于串针对的是字符集对于基本操作,和线性表有区别:1.线性表关注单个元素的操作,比如查找一个元素,插入删除操作2.串更多的是查找子串的位置,得到指定位置的子串,替换子串三.串的存储结构和线性表一样,分为两种:顺序(用一组连续的地址空间).链式存储结构(一个结点存放多个字符的链表) 四.模式匹配:子串的定位操作,通常称为串的模式匹配1.朴素的模式匹配:(不用其他操作<比如字

2016校招真题之串的模式匹配

1.题目描述 对于两个字符串A,B.请设计一个高效算法,找到B在A中第一次出现的起始位置.若B未在A中出现,则返回-1.给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案. 测试样例: "acbc",4,"bc",2 返回:2 2.代码实现 1 package com.wcy.october; 2 3 /** 4 * 时间:2016年10月16日 5 * 题目:串的模式匹配 6 * 题目描述:对于两个字符串A,B.请设计一个高效算法,找到B在

【数据结构】-串

一.串的基本概念 串(字符串):是由零个或多个字符组成的有限序列,一般记为: s='a1a2-an'(n>=0) s是串名,单引号括起来的是串的值,ai(1<=i<=n)可以是字母.数字或其他字符. 串中字符的数目n称为串的长度: 长度为零的串称为空串: 串中任意个连续的字符组成的子序列称为子串: 包含子串的串相应的称为主串: 字符在序列中的序号称为该字符在串中的位置: 子串在主串中的位置以子串的第一个字符在主串中的位置来表示. 二.串的表示和实现 1)定长顺序存储表示:用一组地址连续的

第四章学习小结 串的模式匹配 解题心得体会

串的模式匹配 解题心得体会 关于串,模式匹配是其一个很重要的问题.针对这个问题,书上讲了两种模式匹配的算法,即BF算法和KMP算法,下面针对这两种算法的实现谈谈我的心得. 一.BF算法的探索 [错误代码1] #include<iostream> #include<string.h> using namespace std; typedef struct{ char ch[1000002]; int length; }SString; void Index_BF(SString S,

转载 数据结构 串的模式匹配

转载自http://www.cnblogs.com/dolphin0520/ 十分感谢作者大大 KMP算法 KMP算法 在介绍KMP算法之前,先介绍一下BF算法. 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符:若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果. 举例说明: S:  ababcababa P:  ababa  BF算法匹配的步骤