關於字串的模板留底

2022-07-21 06:30:17 字數 2574 閱讀 4763

都是從網上找的,交過題試過的應該沒問題的模板。

kmp

//

未優化的next函式

void getnext(char s,int

next)

else

j=next[j];

}}//

已優化的next函式

void getnextval(char s,int

nextval)

else

j=nextval[j];

}}//

kmpint kmp( char *t, char *s ) //

s為主串,t為模式串

else i =nextval[i];

}return -1

;}

擴充套件kmp

#include#include

using

namespace

std;

const

int mm=100005

;int

next[mm],extand[mm];

char

s[mm],t[mm];

void getnext(const

char *t)

else

next[k]=l;

} } void getextand(const

char *s,const

char *t)

else

extand[k]=l;

} } int

main()

return0;

}

ac自動機

#include #include 

#include

#include

using

namespace

std;

const

int max_node = 1010

;const

int child_num = 4

;const

int maxn = 12

;const

int inf = 1

<< 30

;struct

acautomaton

//重新建樹需先reset

void

reset()

//將權值為key的字串a插入到trie中

void insert(char *a,int

key)

p =chd[p][c];

}val[p] =key;

}//建立ac自動機,確定每個節點的權值以及狀態轉移

void

construct()

}while (s !=e)

else}}

}} ac;

字尾陣列

//

rank從0開始

//sa從1開始,因為最後乙個字元(最小的)排在第0位

//high從2開始,因為表示的是sa[i-1]和sa[i]

#define m 220000

intrank[m],sa[m],x[m],y[m],high[m],init[m];

intbuc[m];

void calhigh(int

n) bool cmp(int *r,int a,int b,int

l) void suffix(int n,int m = 128

) calhigh(n-1);//

字尾陣列關鍵是求出high,所以求sa的時候順便把rank和high求出來}

//當需要反覆詢問兩個字尾的最長公共字首時用到rmq

intlog[m];

int best[20

][m];

void initrmq(int n)

}}int lcp(int a,int b)

intmain()

//*******************************************

//n為陣列長度,下標0開始

//將初始資料,儲存在init裡,並且保證每個數字都比0大

//m = max + 1

//一般情況下大多是字元操作,所以128足夠了

//*******************************************

init[n] = 0

; suffix(n+1

,m);

initrmq(n);

}

字尾自動機

#include#include

#include

#include

using

namespace

std;

#define n 2010

#define maxq 10010

//字尾自動機節點編號從1開始,ant為節點總數

//0號節點留作空餘

struct

suffix_automaton

void ins(int

x)

}};

Vue 關於字元模板與非字串模板

關於vue字串模板,和非字串模板 看文件時出現字串模板和非字串模板,於是查了查 html 特性是不區分大小寫的。所以,當使用的不是字串模板時,camelcase 駝峰式命名 的 prop 需要轉換為相對應的 kebab case 短橫線分隔式命名 vue.component child 字串模板 指...

多行字串 模板字串

多行字串 下面是普通字串的寫法 普通字串 var l abcd console.log l 編譯結果 如何讓讓乙個字串獨佔多行呢?就需要用到es6 裡的多行字串 多行字串 var i ab cd console.log i 編譯結果 再說說拼接字串,一般情況我們是如何拼接字串的呢?看下面 正常拼接字...

模板 字串 字串匹配

計算next陣列的方法是對於長度為n的匹配串,從0到n 1位依次求出字首字尾最大匹配長度。下面的寫法是僅僅檢測有沒有匹配然後返回第乙個匹配位置,而不是返回所有匹配位置。include include include using namespace std const int n 100 char s...