(待解决)leecode 分词利用词典分词 word break

不戚戚于贫贱,不汲汲于富贵      ---五柳先生

Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.

For example, given
s = "leetcode",
dict = ["leet", "code"].

Return true because "leetcode" can be segmented as "leet code".

搜索--》自顶向下的动态规划(备忘录法)》自底向下动态规划

这些思想一直在使用中

1.递归(搜索)

学习递归时候,老师说他的好处 是简单,其实递归的思路是暴力搜索的方法,所以写的人需要考虑的问题很少,但是栈的调用很耗时,同时可能会出现栈溢出。但是他只做自己需要干的事情,,同时他需要干的事情他会重复做。这为后面的自顶向下的优化做了铺垫。

public class Solution {
    public boolean wordBreak(String s, Set<String> dict) {

        if(s=="") return true;
        for(int i=0;i<s.length();i++)
        {
            String s1=s.substring(0,i+1); //枚举所有以0为开头的的字符串
            if(dict.contains(s1)&&wordBreak(s.substring(i+1),dict))
            {
                return true;

            }

        }

        return false;

    }
}

结果是:  

Last executed input:"acaaaaabbbdbcccdcdaadcdccacbcccabbbbcdaaaaaadb", ["abbcbda","cbdaaa","b","dadaaad","dccbbbc","dccadd","ccbdbc","bbca","bacbcdd","a","bacb","cbc","adc","c","cbdbcad","cdbab","db","abbcdbd","bcb","bbdab","aa","bcadb","bacbcb","ca","dbdabdb","ccd","acbb","bdc","acbccd","d","cccdcda","dcbd","cbccacd","ac","cca","aaddc","dccac","ccdc","bbbbcda","ba","adbcadb","dca","abd","bdbb","ddadbad","badb","ab","aaaaa","acba","abbb"]

2.超时了,如何优化呢,博主在一本书上看过,是自顶向下动态规划,同学们可以查查,其实就是记住了他重复做的事情。

dp[i][j]表示两者之间是否在词典中。

dp[i][j]=dp[i][k] && dp[k+1][j] (i+1=<k<j-1)

public class Solution {

    //
    int dp(int i,int j,String s,Set<String> dict,int d[][]) // get the i to j is exit in the dict
    {
        if(d[i][j]==1) return 1;
        if(d[i][j]==-1) return -1;
        if(dict.contains(s.substring(i,j+1)))
        {
            d[i][j]=1;
            return 1;

        }
        else
        {
            for(int k=i;k<j;k++)
            {
                if(dp(i,k,s,dict,d)==1&&dp(k+1,j,s,dict,d)==1)
                {
                    d[i][j]=1;
                    return 1;

                }

            }

            return -1;

        }

    }
    public boolean wordBreak(String s, Set<String> dict) {
        int len=s.length();

        int d[][]=new int[len][len];
        int ans=dp(0,len-1,s,dict,d);
        if(ans==1) return true;
         return false;

    }
}

错了,还是超时,

3.最后的自定向下方法了,填表,那些专业人士都叫打表。

(待解决)leecode 分词利用词典分词 word break

时间: 2024-10-06 20:52:49

(待解决)leecode 分词利用词典分词 word break的相关文章

求同存异,共创双赢 - 基于对抗网络的利用不同分词标准语料的中文分词方法 | 论文访谈间 #06

https://mp.weixin.qq.com/s/P-a-n1PsBL5hLZWVxyuLQw 「论文访谈间」是由 PaperWeekly 和中国中文信息学会青工委联合发起的论文报道栏目,旨在让国内优质论文得到更多关注和认可. 这是第 6 期「论文访谈间」 论文作者 | 陈新驰.施展.邱锡鹏.黄萱菁(复旦大学) 特约记者 | 郑华滨(中山大学) 在中文信息处理中,分词(word segmentation)是一项基本技术,因为中文的词汇是紧挨着的,不像英文有一个天然的空格符可以分隔开不同的单词

中文分词技术(中文分词原理)

一.       为什么要进行中文分词? 词是最小的能够独立活动的有意义的语言成分,英文单词之间是以空格作为自然分界符的,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分析是中文信息处理的基础与关键. Lucene中对中文的处理是基于自动切分的单字切分,或者二元切分.除此之外,还有最大切分(包括向前.向后.以及前后相结合).最少切分.全切分等等. 二.       中文分词技术的分类 我们讨论的分词算法可分为三大类:基于字典.词库匹配的分词方法:基于词频度统计的分词方法

为Elasticsearch添加中文分词,对比分词器效果

http://keenwon.com/1404.html Elasticsearch中,内置了很多分词器(analyzers),例如standard (标准分词器).english(英文分词)和chinese (中文分词).其中standard 就是无脑的一个一个词(汉字)切分,所以适用范围广,但是精准度低:english 对英文更加智能,可以识别单数负数,大小写,过滤stopwords(例如"the"这个词)等:chinese 效果很差,后面会演示.这次主要玩这几个内容:安装中文分词

python 中文分词:结巴分词

中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词.其基本实现原理有三点: 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法 安装(Linux环境) 下载工具包,解压后进入目录下,运行:python setup.py install 模式 默认模式,试图将句子最精确地切开,适合文本分析 全模式,把句

和我一起打造个简单搜索之IK分词以及拼音分词

elasticsearch 官方默认的分词插件,对中文分词效果不理想,它是把中文词语分成了一个一个的汉字.所以我们引入 es 插件 es-ik.同时为了提升用户体验,引入 es-pinyin 插件.本文介绍这两个 es 插件的安装. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳定,可以用于生产环境. ik 分词器 和 pinyin 分词器在 github 仓库可以找到,注意版本与 elasticsearch 的版本需要对应,本文使

Elasticsearch拼音分词和IK分词的安装及使用

一.Es插件配置及下载 1.IK分词器的下载安装 关于IK分词器的介绍不再多少,一言以蔽之,IK分词是目前使用非常广泛分词效果比较好的中文分词器.做ES开发的,中文分词十有八九使用的都是IK分词器. 下载地址:https://github.com/medcl/elasticsearch-analysis-ik 2.pinyin分词器的下载安装 可以在淘宝.京东的搜索框中输入pinyin就能查找到自己想要的结果,这就是拼音分词,拼音分词则是将中文分析成拼音格式,可以通过拼音分词分析出来的数据进行查

迅捷pdf转换器完美解决如何将pdf转换成word问题

市面上的PDF转换成Word转换器真是五花八门,真正好用的.可以转换的PDF转换成Word转换器少之又少.在这种情况下,pdf是否还可以转换成word呢?别担心,迅捷pdf转换器完美解决如何将pdf转换成word问题. 迅捷PDF转换器整合了PDF和office的相互转换.PDF处理和电子书转换等功能,一款软件中囊括了多个转换形式,让我们无需在为转换而烦恼,它是一款万能的PDF转换成Word转换器. 迅捷pdf转换器的转换步骤:   1.在软件的官方网站(http://www.xjpdf.com

.添加索引和类型,同时设定edgengram分词和charsplit分词

1.添加索引和类型,同时设定edgengram分词和charsplit分词 curl -XPUT 'http://127.0.0.1:9200/userindex/' -d '{   "settings": {     "index": {       "analysis": {         "analyzer": {           "charsplit": {             "

英语中的现在分词和过去分词

英语中的现在分词和过去分词 http://blog.sina.com.cn/s/blog_4e3631450100iecd.html 分词是非谓语动词中的一种形式,是英语教学过程中的重点.难点,也是历届高考考查语法点之一.分词分为现在分词和过去分词两种.它在句子里可作表语.宾语补足语定语和状语.但要注意分词具有主动和进行的意味而过去分词却具有被动和完成的意味. 一.分词在句中的功能 1.分词作表语 现在分词作表语,多表示主语所具有的特征或性质,意为“令人怎样.......”,含主动意味.如:as