JavaScriptの文字列内のすべての可能なパリンドロームサブシーケンスをカウントする
パリンドロームシーケンス:
文字列シーケンスは、前面と背面から同じものを読み取る場合、パリンドロームシーケンスと呼ばれます。たとえば、「aba」、「madam」、「did」はすべて有効な回文配列です。
最初で唯一の引数として文字列を受け取るJavaScript関数を作成する必要があります。入力として使用される文字列は、「a」、「b」、「c」、および「d」のみで構成されることが保証されています。この関数は、文字列に表示されるすべての連続または非連続の回文サブシーケンスの数をカウントして返す必要があります。
例-
入力文字列が-
の場合const str = 'bccb';
その場合、出力は-
になります。const output = 6;
ここでの回文文字列は「b」、「c」、「bb」、「cc」、「bcb」、「bccb」であるため
例
このためのコードは-
になりますconst str = 'bccb'; const countPalindromes = (str = '') => { let base = 1000000007; const dp = Array(str.length).fill([]); for (let l = 1; l <= str.length; l ++) { for (let i = 0; i + l - 1 < str.length; i ++) { let j = i + l - 1; if (l === 1) { dp[i][j] = 1; continue; } if (l === 2) { dp[i][j] = 2; continue; } if (str[i] === str[j]) { let left = i + 1, right = j - 1; while (left <= right && str[left] != str[i]) { left ++; } while (left <= right && str[right] != str[i]) { right --; } if (left > right) { dp[i][j] = dp[i + 1][j - 1] * 2 + 2; } else if (left === right) { dp[i][j] = dp[i + 1][j - 1] * 2 + 1; } else { dp[i][j] = dp[i + 1][j - 1] * 2 - dp[left + 1][right - 1]; } } else { dp[i][j] = dp[i][j - 1] + dp[i + 1][j] - dp[i + 1][j - 1]; } dp[i][j] = dp[i][j] < 0? dp[i][j] + base : dp[i][j] % base; } } return dp[0][str.length - 1]; }; console.log(countPalindromes(str));
出力
そして、コンソールの出力は-
になります6
-
JavaScriptで配列内の可能なAPを数える
等差数列 等差数列(AP)は、2つの連続する数値の差が一定値(別名共通の差)になるような数列です。 たとえば、1、2、3、4、5、6、…はAPであり、共通の差は1(2 -1)です。 問題 整数の配列arrを最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。 この関数のタスクは、そのリストから可能なサイズ3の等差数列の数を返すことです。各進行において、要素間の違いは同じでなければなりません。入力配列は昇順でソートされることが保証されています。たとえば、関数への入力が たとえば、関数への入力が-の場合 入力 const arr = [1, 2, 3, 5
-
C++の特定の文字列内のすべてのパリンドロームサブシーケンスをカウントします
このチュートリアルでは、特定の文字列内のすべてのパリンドロームサブシーケンスの数を見つけるプログラムについて説明します。 このために、文字列が提供されます。私たちのタスクは、その特定の文字列で作成できるパリンドロームサブシーケンスの数を見つけることです。 例 #include<iostream> #include<cstring> using namespace std; //returning total palindromic sequence int count_palin(string str){ int N = str.length