java形式婚配之蠻力婚配。本站提示廣大學習愛好者:(java形式婚配之蠻力婚配)文章只能為提供參考,不一定能成為您想要的結果。以下是java形式婚配之蠻力婚配正文
java形式婚配之蠻力婚配
/**
* 形式婚配之蠻力婚配
*/
package javay.util;
/**
* Pattern Match Brute-Force
* @author DBJ
*/
public class PMBF {
/**
* Pattern Match Brute-Force
* @param target 目的串
* @param pattern 形式串
* @return 形式串在目的串中第一次湧現的地位
*/
public static int patternMatch(String target, String pattern) {
int targetLength = target.length();
int patternLength = pattern.length();
int idxTgt = 0; // 目的串中字符的地位
int idxPtn = 0; // 形式串中字符的地位
int index = 0; // 保留與形式串婚配ing的肇端字符的地位
while(idxTgt < targetLength && idxPtn < patternLength) {
//找到一個婚配的字符
if(target.charAt(idxTgt) == pattern.charAt(idxPtn)) {
// 假如相等,則持續對字符停止後續的比擬
idxTgt ++;
idxPtn ++;
} else {
// 不然目的串從第二個字符開端與形式串的第一個字符從新比擬
index ++;
idxPtn = 0;
idxTgt = index;
}
}
// 婚配到一個,輸入成果
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;
}
以上所述就是本文的全體內容了,願望年夜家可以或許愛好。