任务描述
本关任务:找出最接近的相似串。
一般情况下,度量两个串S1和S2的相似性,可以通过从一个串变换成另一个串所需要的最少操作次数来衡量,需要的操作次数越少,则越相似。
假设从一个串变化成另一个串所允许的操作只有两种:插入一个字符或者删除一个字符。无论是插入还是删除一个符号,均算作一次操作。
现给你一个串S,和一个串的集合T,让你找出集合T中与S最相似的串。
编程要求
右侧编辑器中有一个函数Similar,请在这个函数中读取数据完成任务。
输入数据由学员处理。输入的第一行为一个串S,第二行是一个整数n,范围0 < n < 20,表示接下来集合T中的串的个数。接下来n行,每行为一个串。
注:所有字符串的长度不超过50。
请输出T中与S最相似的串,如果有多个就输出多个串(按照输入时的顺序),每个串占一行。具体见测试说明。
测试说明
平台会对你编写的代码进行测试:
测试输入:
abcd
4
abd
abdc
abed
aebcd
预期输出:
abd
aebcd
提示:
对于第一个串abd,在b后插入一个c就可以变成abcd,操作次数为1次。
第二个串abdc,删除d后面的c,在d前面增加一个c,即可变成abcd,操作次数为2次。
第三个串abed,删除d前面的e,在d前面增加一个c,即可变成abcd,操作次数为2次。
第四个串aebcd