赞
踩
- public class ViolenceMatch {
- public static void main(String[] args) {
- String str1 = "硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好";
- String str2 = "尚硅谷你尚硅你好";
- int index = violenceMatch(str1, str2);
- System.out.println("index=" + index);
- }
-
- //暴力匹配算法
- public static int violenceMatch(String str1, String str2) {
- char[] s1 = str1.toCharArray();
- char[] s2 = str2.toCharArray();
- int s1Len =s1.length;
- int s2Len =s2.length;
-
- int i = 0;//i索引指向s1
- int j = 0;//j索引指向s2
- while (i < s1Len && j < s2Len) {
- if (s1[i] == s2[j]) {
- i++;
- j++;
- }else {
- //如果匹配指令失败,令i=i-(j-1)【向后移一位】,j=0
- i=i-(j-1);
- j=0;
- }
- }
- if (j == s2Len) {
- return i-j;
- }else {
- return -1;
- }
-
- }
- }
Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP 算法”,常用于在一个文本串 S 内查找一个模式串 P 的出现位置,这个算法由 Donald Knuth、Vaughan Pratt、James H. Morris 三人于 1977 年联合发表,故取这 3 人的姓氏命名此算法.
KMP 方法算法就利用之前判断过信息,通过一个 next 数组,保存模式串中前后最长公共子序列的长度,每次回溯时,通过 next 数组找到,前面匹配过的位置,省去了大量的计算时间
key:next数组、KMP搜索
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。