博客
关于我
Hat’s Words HDU - 1247 [字典树]
阅读量:525 次
发布时间:2019-03-08

本文共 925 字,大约阅读时间需要 3 分钟。

#_hat的词汇

在字典中,帽子的词是指一个词,它正好是另外两个字典词的连接。例如,如果"ahatword"可以拆分为"a"和"hatword"(假设这两个词都在字典中),那么它就是一个帽子的词。

#输入输入是2000多个单词,按字母顺序排列。

#输出输出所有帽子的词,同样按字母顺序排列。


思路解析

为了高效地查找帽子的词,可以使用前缀树(或称为字典树)数据结构。前缀树可以将所有单词按照字符逐步划分,快速查找子串是否存在于字典中。

具体步骤如下:

  • 将所有单词构建成一个前缀树
  • 对于每一个单词,尝试将其分割成两个或多个子串
  • 检查这两个子串是否都在字典中
  • 如果存在这样的分割方式,则该词为帽子的词
  • 为了避免误判前缀,我们需要特别注意:

    • 分割后的子串必须正好是一个单词的长度,而不能是更短的前缀
    • 例如,"applepie"长度为8,假设apple和pie都是单词,但app的长度为3,则不能匹配

    实现建议

    因为单词数量可能较多,使用高效的前缀树结构对性能至关重要。以下是一个可能的实现方向:

    • 第一步:将每个单词插入前缀树中
    • 第二步:递归地检查每一个可能的分割点
      • 如果某个分割点分割后的前缀和后缀都存在于字典中,则记录该词为帽子的词
    • 第三步:处理结果并按顺序输出

    这种方法的时间复杂度为O(n * m),其中n是单词数量,m是单词平均长度。假设单词数量为50,000,m最长为1000,则总运算量约为50,000,000,这在现代计算机中是可行的。


    #示例分析

    输入

    采一个示例:

    ahathatwordhzieeword

    观察这个词是否能分割成刚好两个单词的链接。

    分析过程:

  • 尝试分割成"a" 和其他部分:
    • "a"在字典中
    • "hat..."的剩余部分是"hat...",这可能不在字典中
  • 尝试分割成"aha" 和"th...",假设这两个部分都在字典中,则是帽子的词
  • 继续递归分割,直到找到一个完全匹配的分割方式,或者确定无法拆分成恰好两个单词
  • 输出

    在示例中,输出可为:

    ahathatword

    注意事项

    • 分割点必须是明确的词缀,不可以是任意子串(避免误判)
    • 不要完全使用单词做分割点(如单词长度为1)
    • 对于首字母重复的单词,需要考虑不同的分割方式

    转载地址:http://gzkiz.baihongyu.com/

    你可能感兴趣的文章
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>
    MySQL_西安11月销售昨日未上架的产品_20161212
    查看>>
    Mysql——深入浅出InnoDB底层原理
    查看>>
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>
    Mysql不同官方版本对比
    查看>>
    MySQL与Informix数据库中的同义表创建:深入解析与比较
    查看>>
    mysql与mem_细说 MySQL 之 MEM_ROOT
    查看>>
    MySQL与Oracle的数据迁移注意事项,另附转换工具链接
    查看>>