字串演算法整理(upd 2022 1 13)

2022-07-07 02:36:10 字數 1263 閱讀 9476

1.hash

適用範圍:靈活

2.可持久化trie

struct trie
適用範圍:最長回文串,回文串個數

problems:

【國集】最長雙回文串

【gdkoi2021】回文

ps:回文題一般也可用字串雜湊求解

4.ac自動機

fail:擁有相同字尾的字首的深度最大的點

struct acm

void build()

fail[v]=son[fail][i];q.push(v);

}} }

}t;

適用範圍:匹配

problems:

【jsoi2012】玄武密碼

【jzoj3472】匹配

【hnoi2006】最短母串

【tjoi2013】單詞

【poi2000】病毒

【jsoi2007】文字生成器

ps:遇到ac自動機+dp時,不應該只是用在ac自動機上dp的思想設狀態,要結合別的思想,狀壓、容斥、正難則反…

遍歷ac自動機時,不能粗暴列舉,而應該按照bfs序

5.sa

struct sa

f(i,1,n)rk[sa[i]]=i;

int h=0;

f(i,1,n)

}}t;

適用範圍:統計不同子串個數,lcs,lcp,多次出現的子串

problems:

【ahoi2013】差異

【haoi2016】找相同字元

【heoi2016/tjoi2016】字串

6.pam

struct pam

void build()

size[son[now][ch[i]-'a']]++;

last=son[now][ch[i]-'a'];

} fd(i,tot,2)size[fail[i]]+=size[i];

}}p;

適用範圍:統計回文串個數,回文串出現次數

problems:

【jsoi2013】快樂的jyy

【jzoj4752】字串合成

7.sam

struct sam

last=u;

} }}s;

適用範圍:***

problems:

【gdkoi2014】基因模式

演算法整理 字串(LCS,旋轉字串)

字串是程式設計中最重要的一類資料結構,能否對字串進行靈活處理是考察乙個求職者最基本的要求,而且字串在面試中佔的比重也很大,接下來就針對字串相關的演算法進行簡要的整理和歸納。字串相關問題包括最長公共子串 最長公共子串行 字串逆序等等。package com.xpn.string public clas...

字串 簡單 1544 整理字串

題目 給你乙個由大小寫英文本母組成的字串 s 乙個整理好的字串中,兩個相鄰字元 s i 和 s i 1 其中 0 i s.length 2 要滿足如下條件 若 s i 是小寫字元,則 s i 1 不可以是相同的大寫字元。若 s i 是大寫字元,則 s i 1 不可以是相同的小寫字元。請你將字串整理好...

字串知識整理

字串常用功能 string.capitalize 返回原字串,且將字串第乙個字母轉為大寫 string.center width fillchar 將字串中心化處理,兩邊用乙個字元表示 切記非字串 string.count sub start end 計數字串中某子集的數量,可以通過start和st...