【发布时间】:2012-02-21 02:59:23
【问题描述】:
问题
实现一个函数bool chainable(vector<string> v),它将一组字符串作为参数,如果它们可以被链接,则返回true。如果第一个字符串以第二个开头的相同字符结尾,则可以链接两个字符串,例如:
ship->petal->lion->nick = true; (original input is list not LL)
ship->petal axe->elf = false;
我的解决方案:
我的逻辑是,如果它是可链接的,那么只有一个开始和结束不匹配。所以我创建了一个开始列表和一个结束列表。像这样。
starts:s,p,l,n
ends: p,l,n,k
如果我删除公共元素,列表应该最多包含一项。即 s 和 k。如果是这样,列表是可链接的。如果列表是循环的,则最终列表为空。
但我认为我在这里遗漏了一些案例,
编辑: 好吧,显然我的解决方案有问题。我们能总结出最好的算法吗?
【问题讨论】:
-
我很确定每个字符串都可以链接。您对我们隐藏的缺失规则是什么?
-
?见 {ship,petal,axe,elf} 你怎么能用这些做一条链子?第一个的结束字母应该是第二个的开始以形成一个链。
-
啊!这是关于字母的结尾和开头必须相同。感谢您的澄清:)
-
你会如何没有电脑?这很可能是最简单的解决方案。
-
如果是 ship->petal->lion->link->ship->petal 怎么办。这里的开始和结束并不指向船,但它更像是一个循环循环,在最后一种情况下循环不完整?