【发布时间】: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