重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“怎么使用Jerry列出金庸小说中使用过的成语”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Jerry列出金庸小说中使用过的成语”吧!
创新互联是一家专业提供苏尼特左企业网站建设,专注与网站设计制作、网站建设、H5网站设计、小程序制作等业务。10年已为苏尼特左众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。Jerry简单讲下实现原理。Web应用里有一个文本文件,里面维护了汉语里全部的成语,通过分号分隔。
运行时,这些内容会被加载到内存中,构建成一棵树,如下图所示:
其中叶节点以属性end为true区分。
成语检索的核心逻辑位于search函数里,让我们用《笑傲江湖》里一句响亮的口号“日月神教千秋万载,一统江湖”来单步调试,了解其实现逻辑。
进入165行的外层while循环,再进入173行的内层for循环,检测是否有测试字符串第一个字符“日”开头的成语。因为成语是由4个字符组成,所以需要用内层for循环逐一试探,如果遇到tblCur.end为true的元素,说明在测试字符串中发现了一个成语。
下图是内层for循环第一次执行后的tblCur内容:
内层循环执行第二次,此时tblCur指向一棵由所有“日月”开头的成语组成的树:
执行内层循环的第三次迭代,因为在树“日-月”这个分支下面没有“神”这个节点,所以结束当前的内层循环,通过break返回到外层的while循环,进行输入字符串第二个字符“月”的新一轮试探,以此类推。
最后从“千”这个字符出发,沿着内存中的树经过路径"秋-万",最后来到end属性为true的叶节点“载”,记下“千”在输入字符串中的偏移量,存到一个数组arrMatch中去。
待输入字符串全部试探完毕后,根据arrMatch中存放的偏移量,高亮显示对应的字符串,完成检索。
树这个数据结构在这个需求的实现里有着完美的表现。
到此,相信大家对“怎么使用Jerry列出金庸小说中使用过的成语”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!