這個方法的效率顯然無法直視,後面會有相應的改良,比如kmp演算法 ...
package com.cutterpoint.gogogo.program; /** * * . * * @版權:福富軟體 版權所有 (c) 2015 * @author xiaof * @version Revision 1.0.0 * @see: * @創建日期:2017年3月15日 * @功能說明: * */ public class BruteForceStringMatch { public static int pipei(String t, String p) { // 迴圈遍歷到t.length-p.length的次數 int cha = t.length() - p.length(); char tt[] = t.toCharArray(); char pp[] = p.toCharArray(); for (int i = 0; i <= cha; ++i) { // 進行匹配迴圈遍歷模式 int j = 0; while (j < p.length() && tt[i + j] == pp[j]) { // 如果匹配成功,那麼整體後移 ++j; // 如果j++之後就是到了模式末尾,那麼返回位置 if (j == p.length()) return i; // 從第i位開始,模式匹配第一個子串ok } } return -1; } public static void main(String[] args) { String t = "cutterpoint"; String p = "point"; System.out.println(BruteForceStringMatch.pipei(t, p)); } }
這個方法的效率顯然無法直視,後面會有相應的改良,比如kmp演算法