首页 > 其他分享 >字符串

字符串

时间:2022-10-31 17:02:17浏览次数:32  
标签:code 函数 int 字符串 长度 定义

Z函数(EXKMP)

  • 约定:字符串下标以 \(1\) 为起点。
  • 定义:对于个长度为 \(n\) 的字符串 \(s\)。定义函数 \(z[i]\) 表示 \(s\) 和 \(s[i,n]\)(即以 \(s[i]\) 开头的后缀)的最长公共前缀(LCP)的长度。\(z\) 被称为 \(s\) 的 Z 函数。
code
void getZ()
{
    z[1] = n;
    for (int i = 2, l = 0, r = 0; i <= n; i ++ )
    {
        if (i <= r) z[i] = min(z[i - l + 1], r - i + 1);
        while (i + z[i] <= n && str[i + z[i]] == str[1 + z[i]]) z[i] ++ ;
        if (i + z[i] - 1 > r) l = i, r = i + z[i] - 1;
    }
}

标签:code,函数,int,字符串,长度,定义
From: https://www.cnblogs.com/kroyosh/p/16844930.html

相关文章

  • 字符串匹配算法-Sunday
    以往不论是上课还是各种资料书上,看到关于字符串匹配的算法,大抵都是KMP了。然而KMP的next数组理解起来颇为费劲,且容易忘记。在LeetCode刷题中偶然发现了一个叫Sunday的算法,不......
  • 字符串和数组的方法
    字符串和数组的方法一.字符串例子varstr='abcdefg'1.length(获取字符串的长度)console.log(str.length);//72.charAt(str)(获取到的是指定位置的字符)console.......
  • Python学习二:字符串
    文章目录​​一、字符串编码转换​​​​1.1使用encode()方法编码​​​​1.2使用encode()方法解码​​​​二、字符串常规操作​​​​2.1拼接字符串​​​​2.2计算字......
  • 481. 神奇字符串
    481.神奇字符串神奇字符串s仅由'1'和'2'组成,并需要遵守下面的规则:神奇字符串s的神奇之处在于,串联字符串中'1'和'2'的连续出现次数可以生成该字符串。s......
  • 扩展kmp——神奇的字符串匹配
    一、引言一个算是冷门的算法(在竞赛上),不过其算法思想值得深究。二、前置知识kmp的算法思想,具体可以参考这篇日报。trie树(字典树)。三、经典扩展kmp模板问题:扩展k......
  • FFT在字符串匹配中的应用
    对于一类字符串匹配问题:给定长度分别为\(m,n\)的字符串\(A,B\),给出两个相同长度的字符串匹配的定义,要求找出\(A\)在\(B\)中所有匹配的位置。可能能用如下方式解......
  • #yyds干货盘点# 动态规划专题:计算字符串的编辑距离
    1.简述:描述Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删......
  • 583.delete-operation-for-two-strings 两个字符串的删除操作
    问题描述583.两个字符串的删除操作解题思路dp[i][j]表示对word1的前i个字符,word2的前j个字符,使得它们相同的最小步数:if(word1[i-1]==word2[j-1]),dp[i][j]=......
  • 【XSY3905】字符串题(lyndon串,构造)
    题面字符串题题解设所有长度不超过\(n\)的串的集合为\(S\)。考虑找到一种方法,能够对一个lyndon串\(A\),直接求出\(A\)的下一个lyndon串。方法如下:先将\(A......
  • 字符串转int
    将string类型转换成int型:可以用integer类里面的valueof,但我们这里用parseintStringstr="123";Integer.parseInt(str);Integer.parseInt(str,2);其实对于valueof,其......