入门1+1版正向最大匹配法简单实现

来源:互联网 发布:linux配置dhcp服务器 编辑:程序博客网 时间:2024/04/29 06:08
   几年前写在iteye上的唯一一篇博客,直接上代码,算法太简单就不解释了,希望可以帮助初学者有个快速的初步认识。 
public class MywordSeg { 
/** 

* @param intputStr 
* @param map 
* @return 
*/ 
public String wordSeg(String intputStr,Map map) { 
int strLen = intputStr.length(); 
int startPoint = 0;// 起始位置。 
int endPoint = 0;// 结束位置。 
int MaxLength = 12;// 匹配所去字符串的最大值 
boolean isFind = false;// 判断是否是词库中的词的。 
String word=null; 
java.lang.StringBuffer retValSb=new StringBuffer(); 
while (startPoint < strLen) { 
int N = startPoint + MaxLength < strLen ? startPoint + MaxLength : strLen;//所要取出的字符串或者是词组的大小 
isFind = false; 
// 正向最大匹配 
for (endPoint = N; endPoint > startPoint+1; endPoint--) { 
word = intputStr.substring(startPoint, endPoint); 
if(map.get(word)!=null){ 
isFind=true; 
startPoint=endPoint; 
retValSb.append(word).append(","); 
break;//跳出for循环 



if(isFind==false){ 
word= intputStr.substring(startPoint, startPoint+1); 
++startPoint; 


return retValSb.toString(); 

public static void main(String[] arg){ 
MywordSeg seq=new MywordSeg(); 
//构建最简单的Map字典 
Map map=new HashMap(); 
map.put("中文", 1); 
map.put("aa", 1); 
System.out.println(seq.wordSeg("11111",map));