package algorithm;
/**
* @author taoke
* @desc 暴力匹配算法
* @email 1504806660@qq.com
* @date 2022/1/24
*/
public class ViolenceMatch {
public static void main(String[] args) {
int i = match("666 667", "667");
System.out.println(i);
}
/**
* 暴力匹配字符串第一次出现的位置
*
* @param str1 字符串1
* @param str2 字符串2
* @return 匹配到的索引
*/
public static int match(String str1, String str2) {
char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
int len1 = ch1.length;
int len2 = ch2.length;
int i = 0;//ch1的索引
int j = 0;//ch2的索引
while (i < len1 && j < len2) {
if (ch1[i] == ch2[j]) {//匹配成功,继续匹配
i++;
j++;
} else {//匹配失败,i = i - j + 1
i = i - j + 1;
j = 0;
}
}
//是否匹配成功
if (j == len2) {
return i - j;
} else {
return -1;
}
}
}
常用的十大算法-暴力匹配算法
于 2022-01-24 10:40:14 首次发布