字符串矢量排序



我很少使用排序和算法,对向量也没问题。最近我遇到了一个有趣的问题,希望你能给我一些解决问题的建议。

Q、 我在一个向量中得到了4个字符串,必须根据这些字符的具体顺序来排列它们。因此,任何字符串的最后一个字符都应该与任何其他字符串的第一个字符匹配,这个字符串的最后字符应该与任何其它字符串的第一字符匹配,这样我就必须创建一个尽可能长的字符串。

例如,如果我有一个字符串向量,如"ABCD"TGHI"DADC"IYUR"CXYT"所以它会像"ABCD"那样排列,然后会有第三个字符串"DADC",然后是第五个字符串"CXYT",依此类推因此,结果将是"ABCD"DADC"CXYT"TGHI"IYUR"。

现在,我想知道根据上面的规则,如果每个字符串是"兼容的",那么将每个字符串与其他字符串进行检查是否是个好主意。。如果我在向量中有5个字符串,那么我有5+4+3+2+1的可能性,如果我有20个字符串,它会增加很多,这是个好主意吗,或者有其他有效的解决方案吗。。。非常感谢,希望(大部分)你能理解。

将每个字母想象成图中的一个节点。每个单词代表中两个字母之间的定向通路。"ACCA"定义a->a"BAAC"B->C。在此图中,您希望找到一条欧拉路径。http://en.wikipedia.org/wiki/Eulerian_path。欧拉路径被定义为访问每条边一次的路径,因为每条边代表一个单词,意味着你已经使用了所有单词!

更好的方法可能是使用字符串构建有向图。如果s1的最后一个字符与s2的第一个字符相同,则从字符串s1到字符串s2将有一条边。然后你可以试着在图中找到最长的路径。

相关内容

  • 没有找到相关文章

最新更新