【发布时间】:2014-10-20 14:14:42
【问题描述】:
我有一个面试问题是:
"将给定的字符串转换为回文,提供输出 (回文字符串) 应该包含给定字符串的子字符串"
所以我这样做了,给定root 作为输入,我会找到该字符串的反转并将其附加到给定的输入。所以我得到了字符串:
roottoor
这是一个回文并且还包含 i/p (root) 存在于 o/p 中。
给定的解决方案,面试官说,它不是最优的解决方案,你能给出一个最优的解决方案吗?
除此之外我找不到任何东西。
还有其他解决方案吗?
他说需要用 Java 来完成。
【问题讨论】:
-
非常快速的优化是只添加前n-1个字母,因为最后一个字母将成为中心,即:
root->rootoorstack-> @987654327 @ 这只是很小的一部分,不会改变解决方案的时间复杂性,所以你可能需要更多;) -
“子串”是什么意思?就输出的长度而言,建议的解决方案以何种方式“不是最优的”?
-
我认为
rootoor比roottoor短 -
你能提供你使用的代码吗?
-
扩展@MrHug 的注释,尝试检测输入字符串的末尾是否已经包含回文,它至少是最后一个字符(如MrHug 建议的那样)。然后从头向后复制剩余的字符。
标签: java string algorithm optimization palindrome