私はあなたが期待する理由はわからない入力aabaaための出力。 私の考えでは、出力がでなければ、結果は: "aa"、 "aba"、 "aabaa"となるはずです。一度初めに、右もダブルカウントに完全な5文字の文字列を左からあなたのコードはここでしか、カウント:中
if (s === s.split('').reverse().join('')) { count += 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;
}
その後編集:ここでは
は、あなたの質問を解決する
私たちはあなたの文字列にユニークな回文をカウントしたい場合は、私たちはアレイとするたびに、私たちで見つかった回文を保存することができます別のものを見つけたら、以前に追加されているかどうかを確認します:
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;
}
見つかった文字列を印刷すると問題が表示されますか? – Fuhrmanator
文字を任意の順序で組み合わせることができる場合は、まずすべての順列が必要です。あなたは左から右までしか働いていません。 – charlietfl
@charlietfl文字列を逆順にしていたので、これは問題ではないでしょうか?そうではありませんか? –