标签:java 文件 for ar 2014 问题 算法 ef
模式匹配
基本原理
在编辑文本程序的过程中,经常需要在文本中找到某个模式的所有出现位置,典型情况是,一段正在被编辑的文本构成一个文件,而所要搜索的模式是用户正在输入的特定关键字,有效地解决这个问题的算法叫做字符串匹配模式。
形式化描述
假设文本是一个长度为n的数组T【1....n】,而模式是一个长度为m的数组P【1...m】,其中m<n,进一步假设P和T的元素都是来自一个有限字母集的字符,那么如果
0《s 《n-m 并且t【s+1...s+m】=p【1...m】 那么称模式P在文本T中出现,且偏移为s
package jxau.blueDot.lyx;
/**
*@liyixiang
*@2014-8-16
*@TODO:
* 模式匹配之朴素算法
*/
public class BruteForce {
/**
* @param1:subString
* 主串T 长度为n
* @param2:childString
* 子串P 长度为m
* @return
* 返回偏移量s
*/
/**
*
* 1.字串的第一字符与主串的第一个字符比较,若不匹配字串的第一个字符和主串的第
* 二个字符比较
* 2.若字串的第一个字符与主串的某一位置上字符串匹配,则将字串的第二个字符与主
* 串该位的下一位置进行比较,依次类推。遇到不相等,则重复第一步。
*/
public int stringMatching(String subStr,String childStr){
int index = -1; //返回结果 若有则返回偏移量 若无返回-1
boolean match = true;
//从0到最大可偏移量 也就是主串长度n-子串长度m
for(int i=0;i<subStr.length()-childStr.length();i++){
match = true;
for(int j=0;j<childStr.length();j++){
//如果没有匹配到结果
if(subStr.charAt(i+j) != childStr.charAt(j)){
match = false;
}
}
//匹配成功
if(match){
index = i;
break;
}
}
return index;
}
}
模式匹配——BruteForce,布布扣,bubuko.com
标签:java 文件 for ar 2014 问题 算法 ef
原文地址:http://my.oschina.net/u/1247524/blog/302913