java中文分词算法_Java实现逆向最大匹配中文分词算法

写道

//Java实现逆向最大匹配中文分词算法

public class SplitChineseCharacter {

public static void main(String[] args) {

String input = "太好了,今天是星期六啊"; // 要匹配的字符串

new Split(input).start();

}

}

class Split {

private String[] dictionary = {"今天","是","星期","星期六"}; //词典

private String input = null;

public Split(String input) {

this.input = input;

}

public void start() {

String temp = null;

for(int i=0;i

temp = this.input.substring(i); // 每次从字符串的首部截取一个字,并存到temp中

// System.out.println("*****" + temp + "*********" + this.input);

// 如果该词在字典中, 则删除该词并在原始字符串中截取该词

if(this.isInDictionary(temp)) {

System.out.println(temp);

this.input = this.input.replace(temp, "");

i = -1; // i=-1是因为要重新查找, 而要先执行循环中的i++

}

}

// 当前循环完毕,词的末尾截去一个字,继续循环, 直到词变为空

if(null != this.input && !"".equals(this.input)) {

this.input = this.input.substring(0,this.input.length()-1);

this.start();

}

}

//判断当前词是否在字典中

public boolean isInDictionary(String temp) {

for(int i=0;i

if(temp.equals(this.dictionary[i])) {

return true;

}

}

return false;

}

}

/**

过程分析:

第一词循环:

太好了,今天是星期六啊

好了,今天是星期六啊

了,今天是星期六啊

,今天是星期六啊

今天是星期六啊

天是星期六啊

是星期六啊

星期六啊

期六啊

六啊

第一次循环没有找到,则从“太好了,今天是星期六啊”中把最后一个截取,开始第二次循环

第二次循环:

太好了,今天是星期六

好了,今天是星期六

了,今天是星期六

,今天是星期六

今天是星期六

天是星期六

是星期六

星期六 --------->输出:星期六,并在原字符串中截去“星期六”-->变为“太好了,今天是”

太好了,今天是

好了,今天是

了,今天是

,今天是

今天是

天是

是 ----------> 输出:是, 并在原字符串中截去“是”-->变为“太好了,今天”

直到原字符串变为空。

*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

途牛java面试题_途牛java面试题.docx

途牛java面试题途牛java面试题  QUESTION NO: 1   publicclass Test1 {   publicstaticvoid changeStr(String str){   str"welcome";   }   publicstaticvoid main(String args) {   String str"1234";   changeStr(str);   (str);   …

java httpclient 异步请求_java_java实现HttpClient异步请求资源的方法,本文实例讲述了java实现HttpClien - phpStudy...

java实现HttpClient异步请求资源的方法本文实例讲述了java实现HttpClient异步请求资源的方法。分享给大家供大家参考。具体实现方法如下:package demo;import java.util.concurrent.CountDownLatch;import org.apache.http.HttpResponse;import org.apache.http.cli…

idea创建web项目运行报404错误_使用IDEA新建Web工程启动报404的错误

新换了一个项目组被人吐槽配置文件都能写错,所以打算从头开始一步步搭建一个项目,包含ssm基础框架、mongodb工具类、redis工具类、jsf配置、log配置等今天先来搭建一个web工程。工程搭建好运行时发现404我们都知道,一般404都是由于请求资源的…

java高效写文件_java如何高效读写10G以上大文件

有一份10G以上大文本文件,需要替换里面的一些文本信息(每一行都有),如何高效读并替换掉生成新的文件先分割成多个文件多个线程操作多个文件,避免两个线程操作同一个文件按行读文件并按行写入新的文件合并所有文件1,4用linux命令就可以了&…

java md2_GitHub - edzjx/Md2Crypto

此项目来源一个字谜解体过程一个程序猿在自己的微信公众号里出了一个字谜。其中用到了MD2加密算法,这是各很古老的加密算法。从网上搜到作者92年发布的C代码还能正常执行。此项目介绍解题过程,和使用C,C#,Java,Python3来测试代码。文章结构破…

java stringbuffer原理_深入理解Java:String

在讲解String之前,我们先了解一下Java的内存结构。一、Java内存模型按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。JVM主要管理两种类型内存:堆和非堆,堆…

java dubbo jsf_cubelink

cubelink概要设计[TOC]1. 撰写记录更新时间内容作者2017-08-23 08:39:31撰写参数回调章节内容林斌2017-08-22 21:26:52增加了异步响应和异步回调章节林斌2017-08-22 14:36:36确定文档结构和大致框架林斌2. 设计目标设计一个具备治理,监控,服务发现能力的…

用java输出图形_java基础-输出一个简单的图形。

最近写了几行代码输出下面的图形。不多说了,代码如下。 * *** ***** public class javaDemoOne {/** * @brief 主函数 * @author wks * @param args */ public static void main(String[] args) {// TODO Auto-generated method stub inputGraPh(); System.out.print("\n…

python 的案例实战_python案例实战之一

分析思路:1、明确分析目标;2、导入库、导入数据;3、简单查看下数据行列、整体情况;4、数据清洗;5、确定维度和指标;6、分析并作图1、查看整体数据情况1.1引入使用的库import numpy as npimport pandas as p…

django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...

主要内容:https://www.cnblogs.com/liwenzhou/p/8688919.html1 form表单中提交数据的三要素a : form标签必须要有action和method的属性b : 所有获取用户输入的标签必须放在form表单里,也必须要有那么name属性.因为往后端提交数据的时候name所对应的是关键字, input输入的值为va…

java不大于6位_末尾带4的完全平方数的数量并且打印输出_Java计算一个数加上100是完全平方数,加上168还是完全平方数...

题目:一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如…

java使用Encoding导什么包_String getEncoding()

String getEncoding()描述 (Description)java.io.OutputStreamWriter.getEncoding()方法返回此流使用的字符编码的名称。如果编码具有历史名称,则返回该名称; 否则返回编码的规范名称。如果使用OutputStreamWriter(OutputStream,String)构造函数创建此实…

JAVA中增强循环中用线程_在Java中以循环方式运行线程

我是Java中的多线程和同步的新手。我正在尝试实现一项任务,其中给了我5个文件,每个文件将由一个特定线程读取。每个线程应从文件读取一行,然后将执行转发到下一个线程,依此类推。当所有5个线程都读取第一行时,然后再次…

java数据结构期末复习_java数据结构复习02

1.递归问题1.1计算阶乘packageinterview.recursion;importjava.util.Scanner;public classFact {public static voidmain(String[] args) {System.out.println("请输入n的值:");Scanner in newScanner(System.in);int n in.nextInt();int num fact(n);Sys…

java中methods方法_java中Class.getMethod方法

Method Class.getMethod(String name, Class>... parameterTypes)的作用是获得对象所声明的公开方法该方法的第一个参数name是要获得方法的名字,第二个参数parameterTypes是按声明顺序标识该方法形参类型。person.getClass().getMethod("Speak", null)…

centos6 yum快速安装mysql_centos6.10 yum安装mysql 5.6-Go语言中文社区

一、检查系统是否安装其他版本的MYSQL数据#yum list installed | grep mysql#yum -y remove 文件名二、安装及配置# wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm# rpm -ivh mysql-community-release-el6-5.noarch.rpm# yum repolist all | grep mysq…

java struts1_struts1.x

struts1.x摘要: 要想使用Struts,至少要依靠两个配置文件:web.xml和struts-config.xml。其中web.xml用来安装Struts框架。而struts-config.xml用来配置在Struts框架中要使用的资源。如Formbean、Action、插件等。如果使用了某些插件,如Validat…

java加花免杀_UPX加壳免杀添加花指令

UPX加壳、免杀、添加花指令是一款用于制作免杀的给力的工具。使用该软件可以进行软件的UPX加壳、E语言免杀、添加花指令。如果你正在为自己制作的软件过不了杀毒,那么赶快使用这款神器吧。加花方法:1.直接加花记住入口点---找零区域---NOP填充---记住新入…

java scanner转string,Java InputStream to String 转化

1. 概况这篇文章主要是讲怎样将InputStream转换为String。采用[weblink url"http://code.google.com/p/guava-libraries/"]Guava[/weblink]、[weblink url"http://commons.apache.org/proper/commons-io/"]Apache Commons IO [/weblink]以及普通Java代码实…

kafka php 教程,php的kafka踩坑(一)

最近项目上有一个需要用到消息队列的功能,从网上找了一些php相关的kafka使用的教程和博客,大抵都是安装php的拓展librdkafka(这里就不讲这个拓展的安装方法了,搜一下还是有很多教程的),然后直接用这个拓展进行开发,但是…