匹配_有限自动机字符串匹配算法
定义 假设文本是一个长度为n的数组 T[1...n],而模式是一个长度为m的数组P[1...m],其中m<=n。进一步假设P和T的元素都是来自一个有限字母集合M的字符。如M={0,1}或者M={a,b,c,...z}。 字符数组P和T通常称为字符串。 原理 有限自动机 定义...
定义 假设文本是一个长度为n的数组 T[1...n],而模式是一个长度为m的数组P[1...m],其中m<=n。进一步假设P和T的元素都是来自一个有限字母集合M的字符。如M={0,1}或者M={a,b,c,...z}。 字符数组P和T通常称为字符串。 原理 有限自动机 定义...
概述 优先级队列是一种用来维护由一组元素构成集合S的数据结构,其中每个元素都有一个相关的值,称之为关键字。一个最小优先级队列支持以下操作: insert(S,x):将元素x插入到集合S中 min(S):返回S中具有最小关键字的元素 extract_min(S):去掉并返回S中具有...
预处理操作 参数 iterP_begin:模式序列P的起始迭代器 iterP_end:模式序列P的终止迭代器 解析 初始化 pai[1] = 0,k = 0 遍历(q从:2->m) 从2开始,因为Pk必须是Pm的真子集。 条件:k > 0 && p[k...
概述 访问者模式是一种将数据操作和数据结构分离的设计模式。 定义 表示要对对象结构的元素执行的操作。它使您可以定义新操作,而无需更改其所操作元素的类。该模式具有行为目的,并且适用于对象。 角色 Visitor:抽象访问者类 ConcreteVisitor:具体访问者类 Eleme...
概述 备忘录模式能记录一个对象的内部状态,当用户后悔时能撤销当前操作,使数据恢复到它原先的状态。 定义 在不违反封装的情况下,Memento捕获并外部化了对象的内部状态,以便以后可以将对象恢复到此状态。该模式具有行为目的,并且适用于对象。 角色 Memento:备忘录类 Orig...
概述 解释器这个名词想必大家都不会陌生,比如编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。诸如此类的例子也有很多,比如编译器、正则表达式等等。 如果一种特定类型的问题发生的频率足够高,那么可能就...
概述 一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据自己要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这增加了难度。 定...
概述 指定要使用原型实例创建的对象的种类,并通过复制此原型来创建新对象。模式具有创造目的,并处理动态的对象关系。该模式隐藏了从客户端创建新实例的复杂性。 定义 通过给出一个原型对象来指明所要创建对象的类型,然后克隆该原型对象以便创建出更多同类型的新对象。 角色 Prototype...
概述 父类抽象出子类共有的方法,并且自己实现他 子类实现各自不同的业务 父类实现的方法按照一定的逻辑调用抽象方法 为了反之子类重写父类实现的方法父类定义为final方法 定义 一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方...
概述 面向对象技术可以很好地解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。 享元模式通过共享技术实现相同或相似对象的重用。 在享元模式中可以共享的相同内容称为内部状态(IntrinsicSta...