所以几个月前我正在接受编程采访,这个问题因为某些原因而惹恼了我.我能想到几种解决方案,但大多数解决方案效率极低.虽然我多年来一直在编程,但我目前正在大学攻读CS学位,所以我的参考点可能不完整.我希望有人可以提供一些可能的解决方案:
"给定一组字符串和相关的数字'值,'从这些字符串组装回文,其值(由用于创建它的字符串之和定义)是最高的."
可以提供多少个字符串没有限制,可能不会使用某些字符串.
示例:"asd" - 3"dsa" - 5"appa" - 1
结果将是"asdappadsa",值为9.
我的想法是尝试所有顺序中的所有字符串,然后从最低值的一个开始删除一个,但该解决方案是O(N!)并且我认为不行.
(首选语言是C和Java,但不管是什么工作)
编辑:澄清.提供的每个字符串只能使用一次,并且必须完全按照提供的方式使用,但您可以选择不使用回文中的任何字符串.您不能使用提供的字符串的子字符串,也不能反转字符串.