基于英文分词的猜单词游戏
在1.2节实现了一个进阶版的猜姓名游戏,在本节程序实战中请同学们按照以下需求实现一个基于英文分词的猜单词游戏:① 对某一篇英文文章进行分词,以获取一个英语词典
② 如果用户输入的单词在词典中,则提示"你是个猜单词天才,请收下我的膝盖"
③ 如果用户的输入前缀匹配第一个字母,则提示"不错,有点接近了",前缀匹配前面两个字母,则提示"厉害,比较接近了"
需要对英语词典构造一个词典树的结构进行单词查找,单词查找树的数据结构如下图所示:
红色节点表示从根节点到当前节点的最短路径中的所有字母可组成一个单词。比如在上图所示的结构中,an是一个单词,and也是一个单词。
程序难点分析
实现该程序的难点在于如何对英文文章进行分词。我们都知道英文文章中的单词是以空格,逗号等进行分隔的,利用这样的特性,可以很容易地对英文文章进行分词:在遍历的过程中记录非分隔符的起始位置,然后当遍历出的字符为分隔符时就进行单词拆分。
算法逻辑如下:
① 定义一个布尔类型的标记变量,初始情况下为True,表示已完成单词的拆分
② 遍历英文字符串,如果当前字符为分隔符且尚未切分,则开始分词:将起始位置的索引与分隔符位置之前的所有字符进行拆分
③