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

   几年前写在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)); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值