知识大全 串运算的实现

Posted 位移

篇首语:五陵年少金市东,银鞍白马渡春风。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 串运算的实现相关的知识,希望对你有一定的参考价值。

子串定位运算

  串是特殊的线性表 故顺序串和链串上实现的运算分别与顺序表和单链表上进行的操作类似   C语言的串库<string h>里提供了丰富的串函数来实现各种基本运算 因此我们对各种串运算的实现不作讨论 利用串函数实现串的基本运算部分内容【参见练习】   下面讨论在顺序串和链串上实现的子串定位运算

子串定位运算  子串定位运算类似于串的基本运算中的字符定位运算 只不过是找子串而不是找字符在主串中首次出现的位置 此运算的应用非常广泛   【例】在文本编辑中 我们经常要查找某一特定单词在文本中出现的位置 解此问题的有效算法能极大地提高文本编辑程序的响应性能   子串定位运算又称串的模式匹配或串匹配

目标(串)和模式(串)  在串匹配中 一般将主串称为目标(串) 子串称为模式(串)   假设T 为目标串 P为模式串 且不妨设               T= t t t …tn               P= p p p …pm ( <m≤n)

串匹配  串匹配就是对于合法的位置(又称合法的位移) ≤i≤n m 依次将目标串中的子串 titi+ …ti+m 和模式串 p p p …pm 进行比较   ①若 titi+ …ti+m = p p p …pm 则称从位置i开始的匹配成功 或称i为有效位移   ②若 titi+ …ti+m ≠ p p p …pm 则称从位置i开始的匹配失败 或称i为无效位移   因此 串匹配问题可简化为找出某给定模式串P在给定目标串T中首次出现的有效位移    注意   有些应用中要求求出P在T中所有出现的有效位移

顺序串上的子串定位运算( )朴素的串匹配算法的基本思想     即用一个循环来依次检查n m+ 个合法的位移i( ≤i≤n m)是否为有效位移 具体过程【参见动画演示】

( )顺序串上的串匹配算法     以下以第二种定长的顺序串类型作为存储结构 给出串匹配的算法         #define MaxStrSize   //该值依赖于应用 由用户定义       typedef struct            char ch[MaxStrSize]; //可容纳 个字符 并依次存储在ch[ n]中            int length;        SeqString;         int Naive StrMatch(SeqString T SeqString P)         //找模式P在目标T中首次出现的位置 成功返回第 个有效位移 否则返回               int i j k;              int m=P length;  //模式串长度              int n=T length;  //目标串长度              for(i= ;i<=n m;i++)  // <=i<=n m是合法的位移                  j= ;k=i;  //下面用while循环判定i是否为有效位移                  while(j<m&&T ch[k]==P ch[j]                           k++;j++;                                       if(j==m)  //既T[i i+m ]=P[ m ]                          return i;  //i为有效位移 否则查找下一个位移               //endfor               return ;  //找不到有效位移 匹配失败           //NaiveStrMatch

( )算法分析①最坏时间复杂度  该算法最坏情况下的时间复杂度为O((n m+ )m)   分析 当目标串和模式串分别是 an b 和 am b 时 对所有n m+ 个合法的位移 均要比较m个字符才能确定该位移是否为有效位移 因此所需比较字符的总次数为(n m+ )m

②模式匹配算法的改进  朴素的串匹配算法虽然简单 但效率低 其原因是在检查位移i是否为有效位移时 没有利用检查位移i i … 时的部分匹配结果   若利用部分匹配结果 模式串右滑动的距离就不会是每次一位 而是每次使其向右滑动得尽可能远 这样可使串匹配算法的最坏时间控制在O(m+n)数量级上 具体可【参阅有关文献】

cha138/Article/program/sjjg/201311/22622

相关参考

知识大全 数据结构串之串运算的实现

顺序串上的子串定位运算  子串定位又称串的模式匹配(PatternMatching)或串匹配(StringMatching)  在串匹配中一般将主串称为目标(串)子串称为模式(串)  假设T为目标串P

知识大全 串 - 串的存储结构 - 串运算的实现(二)

  顺序串上的子串定位运算  ()朴素的串匹配算法的基本思想  即用一个循环来依次检查nm+个合法的位移i(≤i≤nm)是否为有效位移  具体过程【参见动画演示】  ()顺序串上的串匹配算法  以下以

知识大全 串 - 串及其运算 - 串的基本概念

  串(又称字符串)是一种特殊的线性表它的每个结点仅由一个字符组成  在早期的程序设计语言中串仅在输入或输出中以直接量的形式出现并不参与运算随着计算机的发展串在文字编辑词法  扫描符号处理以及定理证明

知识大全 Java的字串运算符+

Java的字串运算符+  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这个运算符在Java里有一

知识大全 数据结构串之串的基本运算

串的基本运算cha138/Article/program/sjjg/201311/23402

知识大全 串的基本运算

串的基本运算  对于串的基本运算很多高级语言均提供了相应的运算符或标准的库函数来实现为叙述方便先定义几个相关的变量  chars[]=dir/bin/appls[]=fileasms[]*p;&nbs

知识大全 数据结构复习总结第四章串

  第四章串  串及其运算  串的基本概念  串是由零个或多个字符组成的有限序列;  包含字符的个数称串的长度;长度为零的串称空串;由一个或多个空格组成的串称空白串;  串中任意个连续字符组成的子序列

知识大全 数据结构第四章(串)串讲+复习要点

  本章介绍了串的逻辑结构存储结构及串上的基本运算由于在高级语言中已经提供了较全善的串处理功能因此本章的重点是掌握在串上实现的模式匹配算法同时这也是本章的难点但是从全书来讲这属于较简单的一章内容  串

知识大全 24×125简便运算怎么运算

24×125简便运算怎么运算24×125=125×8×3=1000×3=3000简便运算1.8*1.96怎么运算1.8x1.96=1.8x(2-0.04)=1.8x2-1.8x0.04=3.6-0.0