【发布时间】:2013-07-17 17:13:32
【问题描述】:
给定一个字符串数组,当且仅当所有字符串都可以连接在一个链中时返回 true。
连通性的条件是,如果一个字符串的最后一个字符与第二个字符串的第一个字符匹配,则两个字符串可以连通。
示例:String []arr ={"abc", "cde", "cad" , "def" , "eac"} 将返回 true,因为所有字符串都可以连接在一个链中。
"abc"->"cde"->"eac"->"cad"->"def"
另一个示例:String []arr ={"acb" , "cde", "def", "ead" } 返回 False,因为"cde"->"ead"->"def" 是可能的链,但“acb”被省略了。
注意:不一定要从第一个字符串开始形成链,如果从第一个字符串开始可能会得不到链。如果您从任何其他字符串开始,您可以获得一个链。如果存在可能的链,那么您的解决方案应该返回 true。
在第二个示例中,如果假设第一个字符串是“fcb”,那么可能存在一个链,"cde"->"ead"->"def"->"fcb" 所以True。
可能的解决方案(我在想什么):将每个字符串视为一个图形节点,如果满足条件,则连接节点。一旦完成,问题就变成了寻找,
if there exists a Hamiltonian Cycle in a graph,这是 NP-Complete 问题。
有人建议一些算法或任何其他解决方案吗?
【问题讨论】:
标签: arrays string algorithm data-structures