【发布时间】:2013-09-17 21:08:34
【问题描述】:
我正在尝试编写一个小例程,负责置换字符串的所有可能缩写。这个字符串是一个全名,用空格分隔。像这样:
James Mitchell Rhodes
我要输出:
J. Mitchell Rhodes
James M. Rhodes
J. M. Rhodes
等等……但是,我还必须考虑“停用词”:
James the Third Rhodes
我要输出:
J. the Third R.
James The Third R.
对此有已知的算法吗?一段时间以来,我一直在努力解决这个问题。
更新:在数组中包含每个单词非常容易。只需explode(' ', $string) 然后array_map,排除停用词考虑in_array($word, $stopWordsMap)。这不是问题,也不是问题的重点。问题是如何发现可能的原始词(O)和缩写词(A)的组合:
O A A
O A O
O A A
A A A
O O O
【问题讨论】:
-
不,不会有一个众所周知的算法来解决这个问题,因为解决方案是非常简单的字符串操作。
-
您愿意分享您对这种微不足道的字符串操作的解决方案吗?
-
在空间上爆炸,忽略停用词,循环。听起来不难,你在哪里卡住了
-
我认为生成排列“更难”,而不是字符串操作。
-
@Dagon 我会以相反的顺序来做:删除停用词,在空间上爆炸等;)