Java 数据结构与算法系列精讲之字符串暴力匹配
更新时间:2022年02月18日 09:24:13 作者:我是小白呀
字符串暴力匹配算法是指在一个长字符串中暴力寻找是否包含某一子串所谓暴力匹配,就是不使用任何其他算法,将两个字符串中的字符一一进行比对
概述
从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.

字符串匹配
字符串匹配 (String Matching) 指的是判断一个字符串是否包含另一个字符串.

举个例子:
- 字符串 “Hello World” 包含字符串 “Hello”
- 字符串 “Hello World” 不包含字符串 “LaLaLa”
暴力匹配
暴力匹配 (Brute-Force) 的思路:
- 如果
charArray1[i] == charArray2[j], 即匹配成功, i++, j++, 继续匹配下一个字符 - 如果匹配失败, i 重置为
i - (j - 1), j 重置成 0, 继续暴力匹配

暴力匹配实现
public class 暴力匹配 {
public static int BruteForce(String str1, String str2) {
// 将字符串转化为char数组
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
// string长度
int length1 = charArray1.length;
int length2 = charArray2.length;
// 调试输出
System.out.println(charArray1);
System.out.println(charArray2);
int i = 0;
int j = 0;
while (i < length1 && j < length2) {
// 判断是否匹配
if (charArray1[i] == charArray2[j]) {
// 各往后挪一位
i++;
j++;
} else {
// 重新匹配
i = i - (j - 1);
j = 0;
}
}
// 匹配完成, 返回index
if (j == length2) {
return i - j;
} else {
return -1;
}
}
public static void main(String[] args) {
// 字符串1
String str1 = "I am little white";
// 字符串2
String str2 = "white";
// 暴力匹配
int result = BruteForce(str1, str2);
System.out.println(result);
}
}
输出结果:
I am little white
white
12
到此这篇关于Java 数据结构与算法系列精讲之字符串暴力匹配的文章就介绍到这了,更多相关Java 字符串暴力匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
Kafka消费客户端协调器GroupCoordinator详解
这篇文章主要为大家介绍了Kafka消费客户端协调器GroupCoordinator使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10
Java8新特性stream和parallelStream区别
这篇文章主要介绍了Java8新特性stream和parallelStream区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11
spring @Profiles和@PropertySource实现根据环境切换配置文件
这篇文章主要介绍了spring @Profiles和@PropertySource根据环境切换配置文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11


最新评论