【发布时间】:2014-01-14 15:53:28
【问题描述】:
问题是:你有一个单链表,它的节点中包含 String[any no of chars]。现在如何找到组合字符串[无需从链表构建字符串]是否是回文?
示例:["abc"]-->["d"]-->["ed"]-->["c"]-->["ba"] --> 是有效的输入linkedList 组合字符串将是-abcdedcba
这是我想到的:
1.按节点遍历所有列表,计算组合字符串长度-N。
2.取两个指针指向First Node,P1,P2。
3.提前 P1 直到达到字符串长度 >=N/2。[我们必须记住以前的总长度] 现在将节点字符串中的 char 指针前进到指向 N/2+2th char[如果 N 是奇数] 或N/2+1th[如果 N 是偶数]。
4.从 P2 开始,使用指向节点字符串第一个字符的 char 指针。并在字符上执行相同的操作。
5.如果 P1 在所有字符耗尽的情况下结束。那么字符串是回文。
但在这种方法中,我遍历链表 2.5 次。如果 LinkedList 很大,那就不好了。
谁能提出更好的方法。
【问题讨论】:
-
这应该在cs.stackexchange.com 询问,因为它是关于非常简单问题的最佳算法解决方案。
-
为什么偶数长度不是回文? “abba”是回文,不是吗?
-
@Durandal 我也表达了同样的观点,但 abba 是四个字符!
-
@ElliottFrisch 很好,他写道“2.如果长度甚至 - 不是回文。”,我停止阅读那里;)
-
@Durandal 我现在已经编辑了这个问题。你现在想说什么?
标签: java c palindrome singly-linked-list