首页 > 其他分享 >【学习笔记】字符串

【学习笔记】字符串

时间:2024-02-04 09:44:08浏览次数:32  
标签:ab 咕咕 text 笔记 学习 KMP 字符串

1.KMP

【模板】KMP

朴素的比对是如下的:

for(int i=0;i<a.size()-b.size();i++){
	for(int j=0;j<b.size();j++){
   		if(a[i+j]!=b[j])break;
		if(j==b.size()-1)cout<<i<<' ';
	}
}

设 A 串长度 \(n\),B 串长度 \(m\),显然这么做是 \(O(nm)\) 的。

很容易想到一个错误优化:如果失败直接从当前位置找起。

反例很容易给出:在 \(\text{ababac}\) 中找 \(\text{abac}\)。我们在找到第一个 \(\text{abab}\) 后发现失配会直接从下一个 \(\text{a}\) 开始,从而错过正确答案。

分析一下错因:在匹配失败后可能在当前串有作为下一个串的开头的子串而我们舍去了

如果我们知道在找到 \(\text{abcab}\) 时 \(\text{ab}\) 可能作为新的开头从而从 \(\text{ab}\) 开始,就能在保证正确性的情况下大幅加快效率。

2.Manacher 马拉车

3.AC 自动机

4.PAM

咕咕。

5.SA

咕咕咕。

6.SAM

咕咕咕咕。

标签:ab,咕咕,text,笔记,学习,KMP,字符串
From: https://www.cnblogs.com/Zsq20100122/p/18005601

相关文章

  • Problem P06. [算法课分治] 找到 k 个最长重复字符串
    注意是在该子字符串内每个字符的出现次数都不少于k。可以采用分治的方法,函数找一个不符合条件的字符,然后将字符串分成两个子字符串,就这样进行递归运算,每次找到符合条件的子字符串就判断一波长度,然后将最长的长度值存下来。#include<iostream>#include<bits/stdc++.h>#includ......
  • Japan Registry Services (JPRS) Programming Contest 2024 (AtCoder Beginner Contes
    //这一场我感觉有了新的蜕变思考问题也变了多种,3题(✌)A-TLD思路:题目本意 Youaregivenastring S, Printthelastsubstringwhen S issplitby .s给你一个字符串输出最后的点的网址(类似)的后缀,入坑点没有,题意简单。思路方法:最后一个‘.’为停止符号,倒的字符串......
  • 【笔记】快速傅里叶变换
    快速傅里叶变换0记号\(\exp(x)=e^x\)。1复数(Complex)1.1三种形式代数形式:\(z=a+bi\),其中\(a,b\in\mathbbR\)。三角形式:\(z=r(\cos\theta+i\sin\theta)\),其中\(r=\sqrt{a^2+b^2}\)(\(a,b\)是在代数形式中定义的)。指数形式:\(z=r\cdote^{i\theta}\)。根据......
  • 验证回文字符串
    问题描述:给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例1:输入:"aba"输出:True示例2:输入:"abca"输出:True解释:你可以删除c字符。注意:字符串只包含从a-z的小写字母。字符串的最大长度是50000。publicbooleanvalidPalindrome(St......
  • 反转字符串中元音字母
    问题描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例1:输入:"hello"输出:"holle"示例2:输入:"leetcode"输出:"leotcede"classSolution{publicStringreverseVowels(Strings){if(s.length()<=1){return......
  • 反转字符串
    问题描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例1:输入:["h","e"......
  • Python 机器学习 K-近邻算法 鸢尾花种类预测
    ​ K-近邻算法(K-NearestNeighbors,KNN)是一种简单而强大的机器学习算法,适用于分类和回归任务。可以使用scikit-learn库的KNN算法来预测鸢尾花(Iris)的种类。鸢尾花数据集是机器学习领域中常用的一个数据集,包含了150个鸢尾花样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度......
  • 每天1plus道算法题【学习->理解->创新】
    原则和步骤 2024/2/3原则动脑子,具体说就是揣摩背后的思路,思考并查询其在哪种场景下产生的,为了解决什么问题其实这个算是智力题游戏,既然是游戏就可以打怪升级越变越强的步骤step1读题+思考得出解法10min(一遍都是暴力解法)step2尝试写程序实现,可以先提交初版(在vscode里写或......
  • 数学の总结(笔记 + 自学)
    写在「开始」之前:由于笔者从初中二年级就踏上了数学的学习路程,再加上笔者理解力比较强,若有说的不明白的地方,还望指正,thx1.集合我们知道,一个字母可以表示一个数,比如说\(a=0\)。那么,有没有一种东西,可以容纳很多个字母呢?答案是肯定的,数学家们提出了一种叫做集合的一种容器,其中......
  • einops 学习笔记:基础篇
    参考:https://einops.rocks/1-einops-basics/einops(EinsteinOperations)提供了一种语法来便捷地操纵张量。einops支持大多数张量库(当然包括numpy和pytorch)。einops针对所有张量库的语法都完全一致。einops不会影响反向传播的正常进行。这些特性意味着einops可以和现有......