首页 > 代码库 > 模式匹配——BruteForce
模式匹配——BruteForce
模式匹配 基本原理 在编辑文本程序的过程中,经常需要在文本中找到某个模式的所有出现位置,典型情况是,一段正在被编辑的文本构成一个文件,而所要搜索的模式是用户正在输入的特定关键字,有效地解决这个问题的算法叫做字符串匹配模式。 形式化描述 假设文本是一个长度为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; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。