首页 > 其他分享 >提高级字符串

提高级字符串

时间:2024-03-14 19:00:15浏览次数:24  
标签:nxt 前缀 提高 哈希 KMP 字符串 函数

哈希和哈希表

前缀函数&&KMP

前缀函数

定义:\(nxt[i]\)

KMP

例题

1.无线传输(luogu4391/ybt1467)

求一个字符串的最短周期
结论:

\[ans=n-nxt[n] \]

证明:
image
两条白线是最长的相等的前缀和后缀
可得
\(1=2,2=3,3=4,4=5......\)
所以周期的长度就是1的长度
也就是\(n-nxt[n]\)

2.power strings(ybt1457/poj2406)

求一个字符串最多是由多少个相同的子字符串重复连接而成的
利用前缀函数的性质解决
结论:
如果\(L\)能被\(L-nxt[L]\)整除就满足题意,个数为除完的结果,否则为1
证明:
合法情况:
image
不合法情况:
image

trie树

AC自动机

标签:nxt,前缀,提高,哈希,KMP,字符串,函数
From: https://www.cnblogs.com/zysssss/p/18071306

相关文章

  • 04_C++字符串_迭代器使用
    概念:迭代器是一种检查容器内元素并遍历元素的数据类型,通常用于对C++中各种容器内元素的访问,但不同的容器有不同的迭代器,初学者可以将迭代器理解为指针。1.使用迭代器使用begin和end,begin成员负责返回第一个元素(或者第一个字符)的迭代器。end成员返回指向容器“尾元素的下一个位置......
  • 438. 找到字符串中所有字母异位词(中)
    目录题目题解:滑动窗口题目给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。示例1:输入:s="cbaebabacd",p="abc"输出:[0,6]解释:起始索引等于0......
  • 洛谷 P4173 残缺的字符串 卡常小记
    首先,使用匹配函数\(P(x_i,x_j)=x_ix_j-x_i^2[j\neq0]\)。容易发现,当存在\(i\neqj\)时,\(x_ix_j\)的系数只会增加,因此根据Schwartz-Zippel引理,随机一组\(x_{1\sim26}\)对应a~z即可。然后,对于NTT的过程,有两个卡常的点:一是点积reverse后转卷积的过程是舍......
  • js判断数组是否包含某个字符串
    方法1Array.includes(): 这个方法返回一个布尔值,表示数组中是否包含指定的元素letlist=['a','ab','abc','d'];console.log(list.includes('abc'))//true方法2Array.indexOf():这个方法返回指定元素在数组中的第一个匹配位置的索引,如果找不到则返回-1。letlist=......
  • 华为机试题-字符串压缩
    题目给定段英文句子和—个英文单词列表。英文句子包含英文单词和标点符号,其中:1)英文单词只包含[a-zA-Z]范国内的字符;2)标点符号包括逗号、句号、双引号(双引号两边至少有一个空格)。如果列表中有单词在句子中存在(大小写不敏感)且该单词未被双引号包含,则使用该单......
  • 字符串哈希——洛谷P3370
    1.简介本文主要介绍三种实现哈希表的方法:进制哈希,set哈希,map哈希。2.进制哈希#include<iostream>#include<vector>#definemod1000usingnamespacestd;intn,hs,ans;vector<string>a[mod];//数组开多大,取决于mod取多大strings;......
  • 2024最新华为OD机试试题库全 -【提取字符串中最长合法简单数学表达式】- C卷
    1.......
  • 04_C++字符串_vector使用
    1.初始化vector vector<int>v1;默认初始化vector<int>v2(10);10个int类型的元素,初始化值为-1vector<string>v3{"a","bb","ccc"};列表初始化,包括三个元素2.向vector添加元素#include<iostream>#include<string>#include<vector>......
  • 开启线程处理数据,提高响应速度
    //此线程类必须实现Runnable接口publicclassXmzNoticeErrorThreadimplementsRunnable{privateICertImportErrorRecServiceiErrorRecService=ContainerFactory.getContainInfo().getComponent(ICertImportErrorRecService.class);privatei......
  • c#字符串处理 :多空格,多逗号
    1.正规表达式:System.Text.RegularExpressions.Regex.Replace(str,"([]+)","") --  str是输入或要检测的字符串。正则表达式方法Regex.Replace()和匹配符\s(匹配任何空白字符,包括空格,制表符,换页符等,与[\f\n\t\r\v]等效)//使用正则去除空格,换行,制表符,换页符Regexregex=n......