标签:
package org.loda.string; import org.junit.Assert; /** * * @ClassName: NaiveStringMatcher * @Description: 朴素字符串查找 * * text:abcabaabcabac * pattern:abaa * * @author minjun * @date 2015年7月7日 下午4:02:14 * */ public class NaiveStringMatcher { public static void main(String[] args) throws Exception { // 原始文本 String text = "abcabaabcabac"; // 查找的模式 String pattern = "abaa"; // 模式在文本中第一次出现的位置 int index = indexOf(text, pattern); System.out.println(index); } private static int indexOf(String text, String pattern) { Assert.assertNotNull(text); Assert.assertNotNull(pattern); int tLen = text.length(); int pLen = pattern.length(); if (tLen < pLen) return -1; //每次都往右边偏移一位来比较text和pattern for (int i = 0; i < tLen - pLen + 1; i++) { int j; //最多进行pLen轮比较 for (j = 0; j < pLen; j++) { //如果发现不相等的马上停止比较 if (text.charAt(i + j) != pattern.charAt(j)) { break; } } //比较完成之后,如果比较了pLen次,说明执行了完整的比较并且找到了pattern的位置i if (j == pLen) { return i; } } //如果还是没有找到pattern的位置,说明在text不存在pattern return -1; } }
标签:
原文地址:http://my.oschina.net/u/1378920/blog/477751