3 1 1 4 Cstring n n 1

  • Slides: 80
Download presentation

3. 1. 1. 4 C++标准string(续) n n 1. 串长函数 int strlen(char *s); 2. 串复制

3. 1. 1. 4 C++标准string(续) n n 1. 串长函数 int strlen(char *s); 2. 串复制 char *strcpy(char *s 1, char*s 2); 3.串拼接 char *strcat(char *s 1, char *s 2); 4.串比较 int strcmp(char *s 1, char *s 2); 北京大学信息学院 版权所有,转载或翻印必究 Page 9

3. 3 字符串运算的算法实现 n n 1. 串长函数 int strlen(char *s); 2. 串复制 char *strcpy(char

3. 3 字符串运算的算法实现 n n 1. 串长函数 int strlen(char *s); 2. 串复制 char *strcpy(char *s 1, char*s 2); 3.串拼接 char *strcat(char *s 1, char *s 2); 4.串比较 int strcmp(char *s 1, char *s 2); 北京大学信息学院 版权所有,转载或翻印必究 Page 27

【算法 3 -13 】模式匹配原始 算法(其一) #include “String. h” // 不是<String. h> #include<assert. h> int

【算法 3 -13 】模式匹配原始 算法(其一) #include “String. h” // 不是<String. h> #include<assert. h> int Find. Pat_1(String S, String P, int startindex) { // 从S末尾倒数一个模板长度位置 int Last. Index = S. strlen() - P. strlen(); if (Last. Index < startindex) return (-1); //g为S的游标,用模板P和S第g位置子串比较, //若失败则继续循环 for (int g= startindex; g <= Last. Index; g++) if ( P == S. Substr(g, P. strlen() )) return g; //若for循环结束,则整个匹配失败,返回值为负, return (-1); } 北京大学信息学院 版权所有,转载或翻印必究 Page 51

KMP模式匹配示例(一) 0 1 2 3 4 5 6 P= a ba b b N

KMP模式匹配示例(一) 0 1 2 3 4 5 6 P= a ba b b N =[0 0 1 2 3 4 0] 0 1 2 3 4 5 6 7 8 9 10 11 12 S= a b a b a b b… a b a b b X i=6, j=6, N[j-1]=4 a b a b b X i=8, j=6, N[j-1] =4 a b a b b X i=10, j=6, j’=4 a b a b b 北京大学信息学院 版权所有,转载或翻印必究 Page 74

0 1 2 3 4 5 6 7 8 9 P= a a b

0 1 2 3 4 5 6 7 8 9 P= a a b a a c N =[0 1 2 3 4 0] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 S= a a b a a a a c b c a a b c aaaab a aaac X i=2, j=2, N[j-1]=1 aaaa b aaaac X i=2, j=1, N[j-1]=0 aa a abaaaac X i=7, j=4, N[j-1]=3 a a aabaa a a c X i=8, j=4, N[j-1]=3 a a aaba a c 北京大学信息学院 版权所有,转载或翻印必究 Page 75

0 1 2 3 4 5 6 7 8 9 P= a a b

0 1 2 3 4 5 6 7 8 9 P= a a b a a c N =[0 1 2 1 0 1 2 3 4 0] X (不是最长的,应该是 3) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 S= a a b a a a a c b c a a b c aaaab a aaac X i=2, j=2, N[j-1]=1 aaaa b aaaac X i=2, j=1, N[j-1]=0 aa a a baaa a c X i=7, j=4, N[j-1]=1 aaaab a a c …… (错过了!) 北京大学信息学院 版权所有,转载或翻印必究 Page 76