欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之字符串暴力匹配

 更新時間:2022年02月18日 09:24:13   作者:我是小白呀  
字符串暴力匹配算法是指在一個長字符串中暴力尋找是否包含某一子串所謂暴力匹配,就是不使用任何其他算法,將兩個字符串中的字符一一進行比對

概述

從今天開始, 小白我將帶大家開啟 Java 數(shù)據(jù)結(jié)構(gòu) & 算法的新篇章.

字符串匹配

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

舉個例子:

  • 字符串 “Hello World” 包含字符串 “Hello”
  • 字符串 “Hello World” 不包含字符串 “LaLaLa”

暴力匹配

暴力匹配 (Brute-Force) 的思路:

  • 如果charArray1[i] == charArray2[j], 即匹配成功, i++, j++, 繼續(xù)匹配下一個字符
  • 如果匹配失敗, i 重置為i - (j - 1), j 重置成 0, 繼續(xù)暴力匹配

暴力匹配實現(xiàn)

public class 暴力匹配 {

    public static int BruteForce(String str1, String str2) {

        // 將字符串轉(zhuǎn)化為char數(shù)組
        char[] charArray1 = str1.toCharArray();
        char[] charArray2 = str2.toCharArray();

        // string長度
        int length1 = charArray1.length;
        int length2 = charArray2.length;

        // 調(diào)試輸出
        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);
    }
}

輸出結(jié)果:

I am little white
white
12

到此這篇關(guān)于Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之字符串暴力匹配的文章就介紹到這了,更多相關(guān)Java 字符串暴力匹配內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java進階:Struts多模塊的技巧

    Java進階:Struts多模塊的技巧

    Java進階:Struts多模塊的技巧...
    2006-12-12
  • Java基本語法之內(nèi)部類示例詳解

    Java基本語法之內(nèi)部類示例詳解

    本文帶大家認識Java基本語法——內(nèi)部類,將一個類定義放在另一類的定義的內(nèi)部,這個就是內(nèi)部類,內(nèi)部類允許將一些邏輯相關(guān)的類組織在一起,并能夠控制位于內(nèi)部的類的可視性,感興趣的可以了解一下
    2022-03-03
  • IDEA修改SVN地址的實現(xiàn)

    IDEA修改SVN地址的實現(xiàn)

    如果你正在使用SVN進行版本控制,并且需要更改你的SVN地址,那么這篇文章將為你提供必要的步驟和指導,感興趣的可以了解一下
    2023-12-12
  • java連接Mysql數(shù)據(jù)庫的工具類

    java連接Mysql數(shù)據(jù)庫的工具類

    這篇文章主要介紹了java連接Mysql數(shù)據(jù)庫的工具類,非常的實用,推薦給大家,需要的朋友可以參考下
    2015-03-03
  • Java設(shè)計模式之動態(tài)代理模式實例分析

    Java設(shè)計模式之動態(tài)代理模式實例分析

    這篇文章主要介紹了Java設(shè)計模式之動態(tài)代理模式,結(jié)合實例形式分析了動態(tài)代理模式的概念、功能、組成、定義與使用方法,需要的朋友可以參考下
    2018-04-04
  • 關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹

    關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹

    這篇文章主要是關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹,并給出其對應的代碼,需要的朋友可以參考下
    2015-08-08
  • Java中異常Exception和捕獲以及自定義異常詳解

    Java中異常Exception和捕獲以及自定義異常詳解

    在工作過程中,我們常常需要在合適的地方拋出合適的異常,除了java自帶的一些異常,我們可以在項目中定制自己的異常,并且全局捕獲它,下面這篇文章主要給大家介紹了關(guān)于Java中異常Exception和捕獲以及自定義異常的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Spring?AOP實現(xiàn)聲明式事務(wù)機制源碼解析

    Spring?AOP實現(xiàn)聲明式事務(wù)機制源碼解析

    這篇文章主要為大家介紹了Spring?AOP實現(xiàn)聲明式事務(wù)機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 在SpringBoot中整合數(shù)據(jù)源的示例詳解

    在SpringBoot中整合數(shù)據(jù)源的示例詳解

    這篇文章主要介紹了在SpringBoot中如何整合數(shù)據(jù)源,本文介紹了如何在SpringBoot項目中整合常見的數(shù)據(jù)源,包括JdbcTemplate、MyBatis和JPA,并探討了如何配置和使用多數(shù)據(jù)源,需要的朋友可以參考下
    2023-06-06
  • Spring和Hibernate的整合操作示例

    Spring和Hibernate的整合操作示例

    這篇文章主要介紹了Spring和Hibernate的整合操作,結(jié)合實例形式詳細分析了Spring和Hibernate的整合具體步驟、實現(xiàn)方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-01-01

最新評論