Java 数据结构 & 算法宁可累死自己, 也要卷死别人 16 字符串暴力匹配

Posted 我是小白呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
            
        

        // 匹配完成, 返回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 数据结构 & 算法宁可累死自己, 也要卷死别人 16 字符串暴力匹配的主要内容,如果未能解决你的问题,请参考以下文章

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 20 排序算法

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 18 贪心算法

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 18 贪心算法

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 17 KMP 算法

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 17 KMP 算法

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 10 哈希实现