【问题标题】:lexicographically smallest palindrome字典最小回文数
【发布时间】:2016-09-02 20:08:50
【问题描述】:

我正在编写一个程序,我必须找出字符串是否可以成为回文,如果可以的话,将缺失的字母填充到字符串中(由 '.' 表示)。然而,缺少的字母必须以这样一种方式填充,即得到的回文是字典上最小的回文。我能够找出输入的结果回文,但是我不明白什么是字典上最小的回文。

【问题讨论】:

  • 有多种方法可以将字符串转换为回文。但是,您的任务是如果按照字典(字母)顺序排列所有可能的回文,则找到首先出现的回文。
  • 这是来自正在进行的编码竞赛:codechef.com/SEPT16/problems/LEXOPAL。请不要在他们的比赛仍在进行时要求我们为您解决比赛问题,并确保为您的来源提供归属。 (寻求外部帮助也违反了他们的规则。)
  • @D.W.真诚的道歉,但我的目的是理解字典上最小的回文的含义,而不是得到任何编码帮助,事实上我没有。我发布了我的代码,这是另一个错误,我对此负责。我是新的 codechef 用户。

标签: java string algorithm lexicographic


【解决方案1】:

回答您的具体问题:

我的问题是,是否在所有缺失的 '.' 中加入一个。在字符串中(如果可以的话 成为回文)不是按字典顺序生成的字符串 最小的回文数?

嗯,不。

例如: 如果输入是:cbb.bbc,那么输出应该是 cbbabbc。 但是如果输入是df..ffd,那么输出应该是dffaffd。 并非所有点都转换为 a。

【讨论】:

  • edited ,我的程序给出了确切的答案,你的建议仍然没有被接受。
  • 好的。在此处发布程序的代码(相关部分)。还要说明不被接受的原因。
  • 添加了我的代码和示例输入及其输出,错误答案不接受代码
  • 您的程序看起来不错。在问题中查找您可能遗漏的任何具体内容。
【解决方案2】:

始终将 for 填充为缺少的字符并不总是会产生正确的解决方案。考虑以下输入

a.bc.ba

将点替换为“a”会导致

aabcaba

这不是回文。相反,您需要用“b”替换两个点:

abbcbba

如果你有更多的点,问题会变得更加棘手,例如

a.bc.b.a.b.c.a.c.a

按字典顺序最小的回文串是与所有其他可能结果相比,按字典顺序最小的字符串。

这个任务可能更复杂,你可以用多个字符替换一个点。你没有具体说明具体的条件,所以很难给出完整的答案。

【讨论】:

  • 你仍然没有指定一个点是否只能被单个字母替换,或者它是否可以被多个字母替换,或者一个点甚至可以被替换为没有字符?
猜你喜欢
  • 2019-03-08
  • 1970-01-01
  • 2016-04-14
  • 2014-10-21
  • 2016-05-19
  • 2017-08-09
  • 2019-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多