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...