java模式匹配之蠻力匹配
更新時間:2015年05月28日 16:30:50 投稿:hebedich
這篇文章主要介紹了java模式匹配之蠻力匹配的相關(guān)資料和代碼,需要的朋友可以參考下
java模式匹配之蠻力匹配
/** * 模式匹配之蠻力匹配 */ package javay.util; /** * Pattern Match Brute-Force * @author DBJ */ public class PMBF { /** * Pattern Match Brute-Force * @param target 目標(biāo)串 * @param pattern 模式串 * @return 模式串在目標(biāo)串中第一次出現(xiàn)的位置 */ public static int patternMatch(String target, String pattern) { int targetLength = target.length(); int patternLength = pattern.length(); int idxTgt = 0; // 目標(biāo)串中字符的位置 int idxPtn = 0; // 模式串中字符的位置 int index = 0; // 保存與模式串匹配ing的起始字符的位置 while(idxTgt < targetLength && idxPtn < patternLength) { //找到一個匹配的字符 if(target.charAt(idxTgt) == pattern.charAt(idxPtn)) { // 如果相等,則繼續(xù)對字符進行后續(xù)的比較 idxTgt ++; idxPtn ++; } else { // 否則目標(biāo)串從第二個字符開始與模式串的第一個字符重新比較 index ++; idxPtn = 0; idxTgt = index; } } // 匹配到一個,輸出結(jié)果 if(idxPtn == patternLength) { //說明匹配成功 return index; } else { return -1; } } }
使用示例:
static int indexOf(char[] source,char[] target) { char first = target[0]; int max = (source.length - target.length); for (int i = 0; i <= max; i++) { /* Look for first character. */ if (source[i] != first) { while (++i <= max && source[i] != first); } /* Found first character, now look at the rest of v2 */ if (i <= max) { int j = i + 1; int end = j + target.length - 1; for (int k = 1; j < end && source[j] == target[k]; j++, k++); if (j == end) { /* Found whole string. */ return i ; } } } return -1; }
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
java json字符串轉(zhuǎn)JSONObject和JSONArray以及取值的實例
這篇文章主要介紹了java json字符串轉(zhuǎn)JSONObject和JSONArray以及取值的實例的相關(guān)資料,需要的朋友可以參考下2017-05-05Mybatis之typeAlias配置的3種方式小結(jié)
這篇文章主要介紹了Mybatis之typeAlias配置的3種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程
這篇文章主要為大家介紹了Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11Java(springboot) 讀取txt文本內(nèi)容代碼實例
這篇文章主要介紹了Java(springboot) 讀取txt文本內(nèi)容代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng)(實例詳解)
這篇文章主要介紹了JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02mac下修改idea的jvm運行參數(shù)解決idea卡頓的情況
這篇文章主要介紹了mac下修改idea的jvm運行參數(shù)解決idea卡頓的情況,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12Java中的CopyOnWriteArrayList原理詳解
這篇文章主要介紹了Java中的CopyOnWriteArrayList原理詳解,如源碼所示,CopyOnWriteArrayList和ArrayList一樣,都在內(nèi)部維護了一個數(shù)組,操作CopyOnWriteArrayList其實就是在操作內(nèi)部的數(shù)組,需要的朋友可以參考下2023-12-12