串的匹配

一、朴素的模式匹配算法

时间算法复杂度:O(m+n)

 1 /**
 2  * 返回字串T在主串S中第pos个字符串之后的位置。
 3  * 若不存在,则函数返回值为-1
 4  */
 5 function Index (S, T, pos) {
 6   let i = pos;  // 遍历S主串的索引号
 7   let j = 0;  // 遍历T子串的索引号
 8   while (i < S.length && j < T.length) {
 9     if(S[i] == T[j]) {
10       i++;
11       j++;
12     } else {
13       i = i - j + 1; // 回溯到i原来位置的下一位
14       j = 0;
15     }
16   }
17   if(j >= T.length)
18     return i - T.length;
19   else
20     return -1;
21 }
22 // test
23 let S = 'googlegood';
24 let T = 'good';
25 console.log('test:', Index(S, T, 0));

 

上一篇:【优化求解】一种非线性动态自适应惯性权重PSO算法(IPSO)Matlab代码


下一篇:将整形数组的零移动到数组的最后,但是不改变其他数的相对位置