Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之字符串暴力匹配
概述
從今天開始, 小白我將帶大家開啟 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)文章
關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹
這篇文章主要是關(guān)于Java數(shù)組聲明、創(chuàng)建、初始化的相關(guān)介紹,并給出其對應的代碼,需要的朋友可以參考下2015-08-08Spring?AOP實現(xiàn)聲明式事務(wù)機制源碼解析
這篇文章主要為大家介紹了Spring?AOP實現(xiàn)聲明式事務(wù)機制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12在SpringBoot中整合數(shù)據(jù)源的示例詳解
這篇文章主要介紹了在SpringBoot中如何整合數(shù)據(jù)源,本文介紹了如何在SpringBoot項目中整合常見的數(shù)據(jù)源,包括JdbcTemplate、MyBatis和JPA,并探討了如何配置和使用多數(shù)據(jù)源,需要的朋友可以參考下2023-06-06