合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ### 定义 ### C语言中的串实现方式 ``` #include <string.h> #include <malloc.h> int main(void) { //char *a = "dadsasdewe"; //char arr[11] = {"dadsasdewe"}; char *p = (char *)malloc(sizeof(char)*10); strncpy(p,"qwe1212",8); *(p+1) = '0'; //*(a+1)= 'q'; /* int i; for(i=0;i<strlen(a);i++) { (*a) +1 = 'q'; } */ printf("s is %s",p); } ``` ### KMP算法 #### 基本原理 ![](https://box.kancloud.cn/157f7d193a8ec699d7eecfc35efb3ef3_644x1786.jpg) ##### next数组原理 ![](https://box.kancloud.cn/afd7e9c1fae793a72a32f99b198d6f80_645x189.png) * "A"的前缀和后缀都为空集,共有元素的长度为0; * "AB"的前缀为[A],后缀为[B],共有元素的长度为0; * "ABC"的前缀为[A, AB],后缀为[BC, C],共有元素的长度0; * "ABCD"的前缀为[A, AB, ABC],后缀为[BCD, CD, D],共有元素的长度为0; * "ABCDA"的前缀为[A, AB, ABC, ABCD],后缀为[BCDA, CDA, DA, A],共有元素为"A",长度为1; * "ABCDAB"的前缀为[A, AB, ABC, ABCD, ABCDA],后缀为[BCDAB, CDAB, DAB, AB, B],共有元素为"AB",长度为2; * "ABCDABD"的前缀为[A, AB, ABC, ABCD, ABCDA, ABCDAB],后缀为[BCDABD, CDABD, DABD, ABD, BD, D],共有元素的长度为0。 #### 实现代码