程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java形式婚配之蠻力婚配

java形式婚配之蠻力婚配

編輯:關於JAVA

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;
  }

以上所述就是本文的全體內容了,願望年夜家可以或許愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved