【问题标题】:Code works in console but not in Hackerank代码在控制台中有效,但在 Hackerrank 中无效
【发布时间】:2019-05-23 04:11:47
【问题描述】:

我的代码在控制台中运行,但在hackerank 中给出了错误的结果 问题:打印字符串中所有回文子串的计数

function isPalindrome(str) {

  var len = str.length;
  var mid = Math.floor(len / 2);

  for (var i = 0; i < mid; i++) {
    if (str[i] !== str[len - 1 - i]) {
      return false;
    }
  }
  //Had to use this lengthy function because in
  //str == str.split('').reverse().join('');
  //I was getting error that split is not a function
  return true;
}

function scatterPalindrome(str) {
  var result = [],
    c = 0;

  for (let i = 0; i < str.length; i++) {
    for (let j = i + 1; j < str.length + 1; j++) {
      result.push(str.slice(i, j));
    }
  }
  for (let i = 0; i < result.length; i++) {
    let k = result[i];
    if (isPalindrome(k))
      c++;
  }
  return c; // the answer was always 1
}
console.log(scatterPalindrome("abc"));

输入:“abc”

预期输出:3

实际输出:1

【问题讨论】:

  • 您是否在求职面试中寻求帮助以完成 HankerRank 问题?
  • 不,我正在练习,我只需要知道为什么在控制台中工作的相同代码在其他地方不起作用(hackerank)
  • 我无法理解,这段代码如何在abc 的输入(或长度> 1 的任何输入)上产生1 的计数,因为每个单个字符都被计为回文
  • 是的,这就是我的问题

标签: javascript arrays string substring palindrome


【解决方案1】:

由于我无法评论,所以在这里回答,我会说你应该检查他们是否提到有很多测试用例,并且在每个测试用例中你必须进行查询,那么你的输出和他们的输出是合理的输出不匹配

    take no.of testcases input
    while(testcases counter doesn't reach 0 )
           take string input
           call your function for answer for input and print
           decrement testcases counter

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多