Java 数据结构与算法系列精讲之字符串暴力匹配

网友投稿 255 2022-08-27


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";

TDwMCw // 字符串2

String str2 = "white";

// 暴力匹配

int result = BruteForce(str1, str2);

System.out.println(result);

}

}

输出结果:

I am little white

white

12


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【案例】绘制一个薯片?(画一个薯片)
下一篇:【案例】不仅用 Python 制作二维码,我还要扫描它(在这个案例中)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~