`

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

阅读更多
   废话不多说哦,直接上代码,算法太简单就不解释了,希望可以帮助初学者有个快速的初步认识。
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
分享到:
评论

相关推荐

    正则表达式入门与提高

    通过不断实践和学习,你可以掌握正则表达式的复杂用法,包括更复杂的模式、反向引用、正向预查等,从而在VBA中实现更高效和灵活的文本处理功能。在"正则表达式入门与提高.doc"文档中,你将找到更多实例和详细解释,...

    51cto中文分词c语言版略修改

    《51cto中文分词C语言版略修改》是一个专为C语言初学者设计的中文分词项目,它基于正向最大匹配算法(Forward Maximum Matching, FMM)进行实现。正向最大匹配是自然语言处理领域中常用的一种分词策略,主要应用于...

    正则表达式30分钟入门教程-附常用表达式.chm

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它通过一套特定的规则(模式)来定义字符串的匹配模式,广泛应用于编程语言、文本编辑器、Web 开发等领域。本教程旨在帮助初学者在30分钟内...

    正则表达式从入门到精通正则表达式从入门到精通

    正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或者提取特定模式。它是编程语言中不可或缺的一部分,适用于数据验证、文本搜索与替换等场景。本教程将带你从入门到精通,深入理解正则表达式的...

    正式表达式30分钟入门

    1. 贪婪匹配:默认情况下,正则表达式尽可能多地匹配字符,例如`a+`会匹配连续的多个'a'。 2. 非贪婪匹配:通过在量词后添加`?`,如`a+?`,使匹配尽可能少的字符。 四、预定义字符类 1. `\s`:匹配任何空白字符,...

    正则表达式30分钟入门教程.

    =pattern)`:正向预查,匹配后面紧跟`pattern`的字符,但不包含`pattern` - `(?!pattern)`:负向预查,匹配后面不紧跟`pattern`的字符 3. 后向引用: - `\number`:引用前面第number个捕获组的内容 4. 多行模式...

    正则表达式30分钟入门教程(超经典)

    本教程旨在帮助你快速理解正则表达式的基本概念和常见用法,让你在30分钟内入门,能够初步应用在实际编程中。 一、正则表达式基础 1. 字符类: - `\d`:匹配任何数字(等同于[0-9])。 - `\D`:匹配任何非数字...

    java正则表达式入门教程(pdf版).pdf

    - **后向引用**:通过`\1`、`\2`等来引用之前定义的分组,实现重复匹配。 - **零宽断言**:包括`(?=...)`正向零宽断言和`(?!...)`负向零宽断言,用于检查当前位置前后是否有某种模式出现,但不会消耗字符。 - **贪婪...

    三十分钟入门正则表达式.rar

    5. **分组与引用**:使用圆括号`()`对一部分表达式进行分组,可以捕获匹配的结果,并可以通过`\数字`进行引用,如`\1`表示引用第一个分组匹配的内容。 6. **断言**:`^`表示匹配字符串的开始,`$`表示匹配字符串的...

    正则表达式快速入门教程

    ### 正则表达式快速入门教程知识点概览 #### 1. 什么是正则表达式? **定义**:正则表达式是一种强大的文本模式匹配工具,用于描述一系列符合某种特定规则的字符串。它广泛应用于文本搜索、数据提取、格式验证等...

    JS正则表达式入门笔记实例

    - `(pattern1|pattern2)`:分组,选择性匹配`pattern1`或`pattern2`。 - `\number`:反向引用,引用前面第number个括号匹配的内容。 6. **零宽度断言** - `(?=pattern)`正向前瞻:匹配后面可以跟指定模式的位置...

    正则表达式快速入门(中文版)

    本资源“正则表达式快速入门(中文版)”是一本面向初学者的PDF电子书,以简洁易懂的方式介绍了正则表达式的基本概念和常用语法。 正则表达式的概念始于20世纪50年代,由数学家科南·怀特海德和朱利安·诺曼·罗宾逊...

    正则表达式入门教程,30分钟入门

    在这个30分钟入门教程中,我们将深入了解正则表达式的基本概念、语法以及常见应用。 一、正则表达式基本概念 1. 单词字符:在正则表达式中,单词字符通常指的是字母、数字和下划线。在英文模式下,`\w`代表单词字符...

Global site tag (gtag.js) - Google Analytics