我正在尝试开发python算法,以检查字符串是否可以用作另一个单词的缩写。例如

  • fckfc kopenhavn匹配,因为它与单词的第一个字符匹配。 fhk不匹配。
  • fco不应与fc kopenhavn匹配,因为没有人会缩写FC Kopenhavn为FCO。
  • irlin real life的匹配项。
  • ifkifk goteborg的匹配项。
  • aikallmanna idrottskluben的匹配项。
  • aidallmanna idrottsklubben的匹配项。这不是真正的团队名称缩写,但是除非您应用有关瑞典缩写形式的特定领域知识,否则我想很难排除它。
  • manu是对manchester united的匹配。

    很难描述算法的确切规则,但我希望我的示例能够说明我的追求。

    更新我在显示匹配字母为大写的字符串时出错。在实际情况下,所有字母都是小写字母,所以这并不像检查哪个字母是大写字母那样容易。

有帮助吗?

解决方案

这将通过所有测试,包括我创建的一些额外测试。它使用递归。这是我使用的规则:

  • 缩写的首字母必须与的首字母匹配 文字
  • 其余的缩写(缩写减去首字母)必须是以下缩写:

    • 剩余的单词,或
    • 其余文字从 第一个单词的任何位置。
      通用标签

其他提示

这是完成您似乎想做的事情的一种方法 通用标签

插入符号确保缩写的第一个字符与单词的第一个字符匹配,大多数缩写都应为真。

修改: 您的新更新稍微改变了规则。通过使用"(|.*\s)"而不是".*",缩写中的字符只有在彼此相邻或下一个字符出现在新单词的开头时才匹配。

这将正确地将fckFC Kopenhavn匹配,但fco不会。 但是,将aikallmanna idrottskluben进行匹配将无效,因为这需要了解瑞典语,而且操作也不容易。

这是经过小的修改的新代码 通用标签

@Ocaso Protal在评论中说how should you decide that aik is valid, but aid is not valid?,他是对的。

我想到的算法是使用word threshold(用空格分隔的单词数)来工作。 通用标签

您必须定义自己的逻辑,不能盲目地找到缩写。

您的算法似乎很简单-缩写是所有大写字母的串联。 所以: 通用标签

这可能就足够了。 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top