数据结构--模式匹配

PART I:

#!/usr/bin/env python

#encoding=gbk

import sys

def BF():

    = "abbbbbbcdcdddcefg"

    = "bbbbcdcdddcef"

    = 0

    = 0

    print t, p, t.find(p)

    while i <= (len(t) - len(p)):

        """if t[i] == p[j]:move i and j to next"""

        """if t[i] != p[j]:reset i = i - j + 1 and reset j = 0"""

        if t[i + j] == p[j]:

            += 1

        else:

            += 1

            = 0

        if == len(p):

            return i

    return -1

if __name__ == "__main__":

    print BF()

时间: 2024-10-21 01:51:02

数据结构--模式匹配的相关文章

数据结构例程——串的模式匹配(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

大数据技术之_16_Scala学习_08_数据结构(下)-集合操作+模式匹配

第十一章 数据结构(下)-集合操作11.1 集合元素的映射-map11.1.1 map 映射函数的操作11.1.2 高阶函数基本使用案例1+案例211.1.3 使用 map 映射函数来解决11.1.4 模拟实现 map 映射函数的机制11.1.5 课堂练习11.2 集合元素的扁平-flatMap11.3 集合元素的过滤-filter11.4 集合元素的化简-reduce11.5 集合元素的折叠-fold11.6 集合元素的扫描-scan11.7 集合的综合应用案例11.8 集合的合并-zip11

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

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

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

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

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

这里说了些什么? 在这个章节讲了串的结构.构造串的方法.各种对串的操作以及从串的匹配的算法. 串的结构也是千奇百态,有直接按顺序存储的结构,有链条式的存储结构以及基于顺序存储结构和链条结构的合体的名字索引表. 串的操作有点像C++里面有个库叫sctring的操作,函数名字都一样的,然后就是告诉我们是怎么实现的. 模式匹配算法是传统的BF算法(一个一个比失败了就挪动一个位置继续比)和KMP算法(牛皮的跳跃式匹配).关于这个算法我做了一个ppt但是好像不好直接上传,我就上传到了百度云制作了一个链接,

数据结构顺序字符串(插入、删除、查找、BF模式匹配)

插入元素输出之后变成了矩形框架或者变成了汉字,表示自闭了#include<stdio.h> #include<stdlib.h> #define maxSize 100 //串字符数组最大长度 typedef struct{ char ch[maxSize]; //顺序串的存储数组 int length; //顺序串的实际长度 }SeqString; //初始化字符串 void createSeqString(SeqString &s){ s.length=0; } //给

数据结构总结

剑指OfferJAVA版 1.      排序算法 稳定性的概念: 假定待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,称这种排序算法是稳定的,否则称为不稳定的. package com.ljl.sort; import org.junit.Test; /** * 七大排序算法 * @author acer * */ public class Sort { private int[] unsorted={1,3,2,8,9,7,6,6,5,3,4};

字符串模式匹配KMP算法中的next数组算法及C++实现

一.问题描述: 对于两个字符串S.T,找到T在S中第一次出现的起始位置,若T未在S中出现,则返回-1. 二.输入描述: 两个字符串S.T. 三.输出描述: 字符串T在S中第一次出现的起始位置,若未出现,则返回-1. 四.输入例子: ababaababcbababc 五.输出例子: 5 六.KMP算法解析: KMP算法分为两步,第一步是计算next数组,第二步是根据next数组通过较节省的方式回溯来比较两个字符串. 网络上不同文章关于next数组的角标含义略有差别,这里取参考文献中王红梅<数据结构

字符串模式匹配sunday算法

文字部分转自:http://www.cnblogs.com/mr-ghostaqi/p/4285868.html 代码是我自己写的 今天在做LeetCode的时候,碰到一个写字符串匹配的题目: https://oj.leetcode.com/problems/implement-strstr/ 我一看就懵了,字符串模式匹配我记得当时在上数据结构的时候,书上只写了BF和KMP算法,老师说考试“只可能会考BF”,KMP不要求掌握. 然后出于一颗探求的心,我还是看了一下KMP,这算法好难理解,于是就没