0001 /* 0002 * 串模式匹配:蛮力算法 0003 * 若返回位置i > length(T) - length(P),则说明失配 0004 * 否则,i为匹配位置 0005 */ 0006 import dsa.*; 0007 import java.io.*; 0008 0009 public class PM_BruteForce { 0010 ////////////////////////////////////////////////////////////////////////// 0011 // T: 0 1 . . . i i+1 . . . i+j . . n-1 0012 // --------------------|-------------------|------------ 0013 // P: 0 1 . . . j . . 0014 // |-------------------| 0015 ////////////////////////////////////////////////////////////////////////// 0016 public static int PM(String T, String P) { 0017 int i;//模式串相对于文本串的起始位置 0018 int j;//模式串当前字符的地址 0019 for (i = 0; i <= T.length() - P.length(); i++) { //文本串从第i个字符起,与 0020 for (j = 0; j < P.length(); j++) { //模式串的当前字符逐次比较 0021 if (T.charAt(i + j) != P.charAt(j)) break; //若失配,模式串右移一个字符 0022 } 0023 if (j >= P.length()) break;//找到匹配子串 0024 } 0025 return(i); 0026 } 0027 }