醉酒叔叔(对不起,我和AUS锁定区域锁定)是《周六夜现场》的虚构人物。他经常为听起来像他们的其他人混淆单词。对于此挑战,您需要将普通语音转换为醉酒语音。
算法
转换为醉汉言语需要交换文本中的单词顺序。交换基于两个单词的醉酒相似性。酒醉相似度定义为两个单词在同一索引处出现的字母数。但是,两个相同的单词的醉酒相似度为-1。例如,tree
与friend
具有2醉酒的相似性,因为它们都具有“R”在索引1,和一个“e”在索引3。
您所要做的就是在文本中找到醉酒相似度最高的两个单词,然后交换它们。交换两个条款后,它们将不再移动。然后,查看其余的可交换条款,并交换醉酒相似度最高的两个。您将继续执行此操作,直到无法再交换任何内容为止。然后输出(或返回一个函数)更新后的文本。
细节
- 为简单起见,输入是由[A-Za-z]中的字符组成的单词列表
- 每个输入至少包含一个字
- 字母匹配不区分大小写:
A
与匹配a
(注意:由于此规则Dog
且dog
相同,因此DS值为-1) - 如果多对醉酒相似度最高:
- 在可以最大程度提高醉酒相似性的单词中,选择列表中索引最低的单词
- 将单词与索引最低的单词配对,以最大程度地提高醉酒相似度
例子
Drunk Uncle needs your help
(标题)- S 1:醉<=>您的(DS:1)
your Uncle needs Drunk help
- S 2:需要<=>帮助(DS:1)
your Uncle help Drunk needs
- 输出:
your Uncle help Drunk needs
- S 1:醉<=>您的(DS:1)
I love fidget spinners
(无聊的例子)- S 1:我<=>爱(DS:0)
love I fidget spinners
- S 2:烦恼<=>微调(DS:0)
love I spinners fidget
- S 1:我<=>爱(DS:0)
dog eat dog ear
- S 1:吃耳朵(DS:2)
dog ear dog eat
- S 2:dog <=> dog(DS:-1)
dog ear dog eat
(此步骤只是形式)
- S 1:吃耳朵(DS:2)
Let me tell you a story
- S 1:让<=> me(DS:1)
me Let tell you a story
- S 2:告诉<=>您(DS:0)
me Let you tell a story
- S 3:故事(DS:0)
me Let you tell story a
- S 1:让<=> me(DS:1)
Too many money and purple people
- S 1:紫色<=>人(DS:4)
Too many money and people purple
- S 2:很多钱(DS:2)
Too money many and people purple
- S 3:太<=>和(DS:0)
and money many Too people purple
- S 1:紫色<=>人(DS:4)
让我知道您是否想讲更多示例。
8
请将“我爱
—
飞旋陀飞轮
“自然语言”
—
HyperNeutrino