Java 数据结构与算法系列精讲之字符串暴力匹配
作者:我是小白呀
字符串暴力匹配算法是指在一个长字符串中暴力寻找是否包含某一子串所谓暴力匹配,就是不使用任何其他算法,将两个字符串中的字符一一进行比对
概述
从今天开始, 小白我将带大家开启 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 字符串暴力匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!