本文主要是介绍【Java 数据结构 算法】宁可累死自己, 也要卷死别人 16 字符串暴力匹配,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【Java 数据结构 & 算法】⚠️宁可累死自己, 也要卷死别人 16⚠️ 字符串暴力匹配
- 概述
- 字符串匹配
- 暴力匹配
- 暴力匹配实现
概述
从今天开始, 小白我将带大家开启 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;}}// 匹配完成, 返回indexif (j == length2) {return i - j;} else {return -1;}}public static void main(String[] args) {// 字符串1String str1 = "I am little white";// 字符串2String str2 = "white";// 暴力匹配int result = BruteForce(str1, str2);System.out.println(result);}
}
输出结果:
I am little white
white
12
这篇关于【Java 数据结构 算法】宁可累死自己, 也要卷死别人 16 字符串暴力匹配的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!