【问题标题】:Palindrome: finding the shortest possible stringPalindrome:寻找最短的字符串
【发布时间】:2019-02-27 05:10:36
【问题描述】:

任务如下:“编写一个 JavaScript 程序来找到最短的字符串,该程序可以创建一个字符串,通过在其末尾添加字符使其成为回文。”

这是我正在查看的代码:

function build_Palindrome(new_str) {
  var flag;
  for (var i = new_str.length;; i++) {
    flag = true;
    for (var j = 0; j < i - j - 1; j++) {
      if (i - j - 1 < new_str.length && new_str[j] != new_str[i - j - 1]) {
        flag = false;
        break;
      }
    }
    if (flag) {
      for (var j = new_str.length; j < i; j++) {
        new_str += new_str[i - j - 1];
      }
      return new_str;
    }
  }
}

测试:

console.log(build_Palindrome("abcddc"))

输出:

abcddcba    

我的问题:起初它以j=0 开头。如果在for 循环中flag=false,那么它是如何进行的?是i=7 (i++?) 是j=0 还是j=1

【问题讨论】:

  • 你自己做了什么调查?
  • 我试图弄清楚代码是如何工作的。我在 Palindrome 上找到了一些文章和算法,但它们用于确定单词或单词串是否是回文,这是不同的。上面提到的任务看起来更复杂。
  • 为什么不简单地在代码中添加一些console.log 语句并检查运行时显示的内容?
  • 谢谢哥们。看起来它显示了我需要的东西。我现在可以调查代码了。

标签: javascript palindrome


【解决方案1】:

是的,您可以使用 console.log 或任何调试器进行调试。

对于您的情况,如果 flag 为 false,它将打破 j 的循环并转到其外部循环(i在这里)

我在这里做了演示: https://repl.it/repls/LoyalProfuseRouter

您可以看到演示(它与我的解决方案一起提供),您可以使用简单的循环来返回字符串,而不是 break,它更具可读性。

【讨论】:

  • 这个函数f是一个在嵌套for循环中使用break的demo
  • 好的。谢谢你。
  • 没问题的人。跟上 stackoverflow,尽管您的问题得到了一些人的反对,但请记住您学到了什么以及下次如何使问题变得更好。
  • 谢谢哥们。我是编码领域的新手,但现在努力学习。
猜你喜欢
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多