首页 > 编程语言 >字符串算法学习笔记

字符串算法学习笔记

时间:2024-02-01 09:48:02浏览次数:22  
标签:Trie 笔记 算法 判定 字符串 自动机 节点

\(\text{Pt.} 1\) 基础

一、进制哈希

二、Manacher

三、Trie



\(\text{Pt.} 2\) 自动机

自动机是什么?它是一个对“信息序列”进行判定的数学模型。“信息序列”可以很随意,比如一个二进制数,比如一个字符串。而“判定”也可以很随意,比如判定一个二进制数是不是奇数,判定当前字符串是不是某个字符串的子串。

它的本质是一个有向图。它里面的节点分为两种:“接受节点”和“不接受节点”,在哪个地方停下就说明是判定成功还是不成功。

具体的一个判定过程是这样的:从一个代表“空”的起始节点开始,逐步地往里面插入信息序列的每一个元素。直到插完了或是走不动了,就停下来,进行判定。

是不是很像 Trie?没错,Trie 就是一种自动机。下面的算法都是自动机。(不知道能不能这么说,因为 OIwiki 上说自动机是一种数学模型,不能等同于 data stracture、algorithm 之流……)

自动机的基本套路:用于向末尾插入新节点时动态维护信息;有一个 Fail 指针,用于失配之后跳向之前的后缀,即“如果这个串不行,就试试它的后缀可不可以”的思想。


四、回文树(回文自动机)

标签:Trie,笔记,算法,判定,字符串,自动机,节点
From: https://www.cnblogs.com/David-Mercury/p/18000552

相关文章

  • 初等字符串
    $CuO+CO\triangleqCu+CO_2$初等字符串字符串Hash\(\bf{Hash}:\)一种好用又cd的算法\(·First\)如果要比较两个字符串的大小,开\(string\)两两比较是\(O(n)\)の算法如果进行\(m\)次比较的话$O(m\timesn)$显然去世考虑\(O(m)\)の算法,即让比较过程变为\(O(1)\)......
  • CEIT算法训练-双指针部分题解(T1-3)
    AnagramSearch题意简述两个字符串\(s\)和\(t\)相似的定义为:\(s\)可以打乱之后重新排列成为\(t\)。题目给出\(a\)和\(b\),问\(a\)中有多少子串(连续的一段)与\(b\)相似。同时,\(a\)中还含有\(?\)字符,他可以等价于任何字符(可以变成任何字符)解题思路实际上,根据题......
  • 《算法导论(原书第3版)》PDF
    内容简介在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步......
  • 程序是怎样跑起来的第二章读书笔记
    根据本章内容知道了8位=1字节,了解了用二进制数表示计算机信息的原因。只要掌握了使用二进制数来表示信息的方法及其运算机制也就自然能够了解程序的运行机制,理解了为什么计算机处理的信息要用二进制数来表示的,近一步知道用二进制数表示计算机信息的原因。计算机内部是由IC”这种......
  • 蒻苟的第一篇学习笔记(快速排序)
    快速排序是一个非常经典也非常常用的排序算法。在平均状况下,排序n个项目需要Ο(nlogn)次比较,在最坏状况下则需要Ο(n2)次比较,但这种状况其实并不常见。快速排序是分而治之思想在排序算法上的典型应用。算法步骤:1.从数列中挑出一个元素,称为"基准"。2。设置两个"哨兵",利用......
  • 《程序是怎样跑起来的》阅读笔记 - 第一、二章
    简介:《程序是怎样跑起来的》是一本介绍计算机程序工作原理的畅销书籍。本文将对该书的前两章进行阅读笔记,主要涵盖了计算机基础知识和程序执行过程的基本原理。第一章:计算机基础知识本章主要讲解了计算机的基本组成部分以及它们之间的关系。作者通过引入一个简单的模型,描述了计......
  • 欧拉函数学习笔记
    前言本人能力有限,有错误欢迎指出。定义\(\varphi(n)\)表示的是小于等于\(n\)和\(n\)互质的数的个数。公式设\(n=\prod\limits_{i=1}^{s}p_i^{k_i}\),有\[\begin{aligned}\varphi(n)&=\prod_{i=1}^s\varphi(p_i^{k_i})\\&=\prod_{i=1}^sp_i^{k_i}-p_i^{k_i-1}\\&=\prod......
  • 《程序是怎样跑起来的》阅读笔记 - 第三、四章
    简介:继续探索《程序是怎样跑起来的》,本文将对该书的第三、四章进行阅读笔记,重点关注计算机程序的存储和数据处理。第三章:计算机的存储器本章主要讲解了计算机的存储器,包括随机存取存储器(RAM)和只读存储器(ROM)。作者首先介绍了这两种存储器的基本概念和特点,然后深入讨论了它们在计......
  • 标题:《程序是怎样跑起来的》阅读笔记 - 第五、六章
    简介:本文将继续探索《程序是怎样跑起来的》,对该书的第五、六章进行阅读笔记,重点关注计算机程序的运行流程和输入输出操作。第五章:程序的执行本章主要讲解了程序的执行过程,包括指令的抓取、解码和执行等步骤。作者详细介绍了计算机中指令的编码方式和指令集体系结构,并解释了控制......
  • Python 机器学习 K-近邻算法 常用距离度量方法
    ​K-近邻(K-NearestNeighbors,KNN)算法中,选择合适的距离度量是非常重要的,因为它决定了如何计算数据点之间的“相似性”。不同的距离度量可能会导致不同的KNN模型性能。选择哪种距离度量取决于数据的类型和问题的性质。可以通过交叉验证来比较不同距离度量对模型性能的影响,以选择最......