Javascript 计算一个字符串中有多少子字符串是回文
我目前正试图计算出给定字符串中有多少子字符串是回文 当给定字符串aabaa时,预期输出为5,而我的代码输出为4。我不太清楚为什么,有人能帮我解决这个问题吗 我的代码:Javascript 计算一个字符串中有多少子字符串是回文,javascript,Javascript,我目前正试图计算出给定字符串中有多少子字符串是回文 当给定字符串aabaa时,预期输出为5,而我的代码输出为4。我不太清楚为什么,有人能帮我解决这个问题吗 我的代码: function countPalindromesInString(s) { let count = 0; if (s === s.split('').reverse().join('')) { count += 1; } let testStr = ''; for (l
function countPalindromesInString(s) {
let count = 0;
if (s === s.split('').reverse().join('')) {
count += 1;
}
let testStr = '';
for (let i = 0; i < s.length; i++) {
testStr += s[i];
if (testStr === testStr.split('').reverse().join('')) {
count += 1;
}
}
return count;
}
函数countPalindromesInString(s){
让计数=0;
如果(s===s.split(“”).reverse().join(“”)){
计数+=1;
}
设testStr='';
for(设i=0;i
我不确定您为什么希望输入aabaa的输出5。
从我的观点来看,如果你认为一个字母作为回文,输出应该是<强> 9 < /强>,否则结果应该是<强> 4 < /强>:“AA”、“AA”、“ABA”、“AABAA”。您的代码仅从左到右计数,并且在开始时对完整的5个字母字符串进行双重计数,如下所示:
if(s===s.split(“”).reverse().join(“”)){
计数+=1;
}
并且在for循环中为案例i=4
以下是您问题的解决方案:
function countPalindromesInString(s) {
let count = 0; //or s.length if you chose to count single letters as palindrome
let subString;
for (let i = 1; i < s.length; i++) {
for(let j = 0; j < s.length - i; j++) {
subString = s.substring(j, j+i+1);
if(subString === subString.split('').reverse().join('')) {
count += 1;
}
}
}
return count;
}
函数countPalindromesInString(s){
让count=0;//或s.length,如果选择将单个字母计数为回文
让子串;
for(设i=1;i
稍后编辑:
如果我们要计算字符串中的唯一回文,我们可以将在数组中找到的回文存储起来,每次找到另一个回文时,我们都会检查它是否以前添加过:
function countPalindromesInString(s) {
let subStrings = [];
for (let i = 0; i < s.length; i++) {
for(let j = 0; j < s.length - i; j++) {
let subString = s.substring(j, j+i+1);
if(subString === subString.split('').reverse().join('') && !subStrings.includes(subString)) {
subStrings.push(subString);
}
}
}
return subStrings.length;
}
函数countPalindromesInString(s){
设子串=[];
for(设i=0;i
打印您找到的字符串,您应该会发现问题所在?如果字符可以按任意顺序组合,则首先需要所有排列。你只是从左到右工作right@charlietfl我假设,因为我在迭代时反转了字符串,所以这无关紧要,或者情况并非如此?取决于赋值的约束条件。谢谢你的回答,我已经找到了为什么输出应该是5。基本上,我需要找到不同的子字符串,所以没有重复。输入aabaa应为a、aa、aabaa、aba、b,因此为输出5。如何修改您的答案以实现此目的?将找到的所有回文存储在一个数组中。要确保它们是唯一的,请检查新发现的回文是否以前添加到数组中。我编辑了答案并为您的问题添加了可能的解决方案。