滴滴19年笔试题---“英文单词拼写纠错推荐”的题解

本文章用于自我总结和帮助他人,总体上来说这是一个“编辑距离”的变种题,需要2维DP。题目是这样的:

英文单词拼写的时候可能会出现拼写错误的情况(typo)。下面的题目,我们尝试实现拼写纠错推荐的功能。
字串编辑距离是衡量字串间相似度的常见手段。

①字串编辑距离:是指利用字符操作,把字符串A转换成字符串B所需要的最少操作数。

②字串操作包括:删除字符(removal)、插入字符(insertion)、修改字符(substitution)。

③使用以下规则对推荐纠错选项进行相似度排序。得分越高,认为相似度越低

只涉及到26个英文字符、不区分大小写。

删除(removal)  3分
插入(insertion) 3分
修改(substitution) :


    (q w e r t a s d f g z x c v ) (y u i o p h j k l b n m)


    以上两个分组内的字符修改1分,两个分组间字符修改 2分。


输入


·每行一个输入。空格分割参数。
·第一个参数是目标单词(可能存在typo)
·后面若干空格分割参数(个数不定)是字典单词,作为候选纠错项(也可能和第一个参数重复)。


输出


·按照上面的纠错规则字串相似度最小编辑距离进行排序,给出3个(如有)对应的纠错候选。
·如得分相同,则按照输入顺序进行排序。


题目限制


时间限制:C/C++语言 1000 MS;其他语言 3000 MS
内存限制:C/C++语言 65536KB;其他语言 589824KB


样例输入


slep slap sleep step shoe shop snap slep
样例输出


slep slap step

想要求解2个字符串的编辑距离,需要用到2维DP(这个力扣上有比我说的更好的),那么在以知道了基础编辑距离解法为前提,这个题目就很好做了。但是需要改一些地方:

① 这里不像经典“编辑距离”那样三个操作一视同仁,而是各自有权值,比如删除和插入是3分,但是修改只有1~2分,所以在写状态转移方程的时候需要修改min函数里面的常数项,换成+3,+2,+1这样的值

② 需要对“在不在 (q w e r t a s d f g z x c v ) (y u i o p h j k l b n m)列表里面”做分情况处理

#动态规划#
全部评论

相关推荐

ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务