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ù)對字符進(jìn)行后續(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-05
Mybatis之typeAlias配置的3種方式小結(jié)
這篇文章主要介紹了Mybatis之typeAlias配置的3種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程
這篇文章主要為大家介紹了Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Java(springboot) 讀取txt文本內(nèi)容代碼實例
這篇文章主要介紹了Java(springboot) 讀取txt文本內(nèi)容代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02
JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng)(實例詳解)
這篇文章主要介紹了JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02
mac下修改idea的jvm運行參數(shù)解決idea卡頓的情況
這篇文章主要介紹了mac下修改idea的jvm運行參數(shù)解決idea卡頓的情況,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
Java中的CopyOnWriteArrayList原理詳解
這篇文章主要介紹了Java中的CopyOnWriteArrayList原理詳解,如源碼所示,CopyOnWriteArrayList和ArrayList一樣,都在內(nèi)部維護(hù)了一個數(shù)組,操作CopyOnWriteArrayList其實就是在操作內(nèi)部的數(shù)組,需要的朋友可以參考下2023-12-12

