16
星期一迷你高尔夫#3:字谜距离
星期一迷你高尔夫:每周一发布(希望!)一系列简短的代码高尔夫挑战赛。 (对不起,这有点晚。) 我敢肯定,你们大多数人都听说过Levenshtein distance,一种用于计算两个琴弦之间距离的算法。嗯,这个挑战是关于实现我自己的发明*的类似算法,即anagram distance。主要区别在于字符的顺序无关紧要。而是仅测量一个字符串或另一个字符串唯一的字符。 挑战 挑战的目标是编写一个程序或函数,该程序或函数接受两个字符串并返回它们之间的字谜距离。实现此目的的主要方法是使用以下逻辑: 将两个字符串都转换为小写,并(可选)按字母顺序对每个字符进行排序。 当字符串中至少包含一个相等的字符时,请从每个字符串中删除该字符的第一个实例。 添加剩余字符串的长度,并返回/输出结果。 例 如果输入是: Hello, world! Code golf! 然后,将它们转换为小写并排序:(按JS的默认排序;请注意前导空格) !,dehllloorw !cdefgloo 删除两个字符串中的所有字符,我们最终得到: ,hllrw cfg 因此,原始两个字符串之间的字谜距离= 6 + 3 = 9。 细节 字符串可以采用任何明智的格式。 字符串将仅包含可打印的ASCII。 字符串本身将不包含除常规空格以外的任何空格。(没有选项卡,换行符等) 只要结果相同,就无需使用此精确算法。 测试用例 输入1: Hello, world! Code golf! 输出1: 9 输入2: 12345 This is some text. .txet emos si …