Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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

  1. JavaScriptで配列内の可能なAPを数える

    等差数列 等差数列(AP)は、2つの連続する数値の差が一定値(別名共通の差)になるような数列です。 たとえば、1、2、3、4、5、6、…はAPであり、共通の差は1(2 -1)です。 問題 整数の配列arrを最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。 この関数のタスクは、そのリストから可能なサイズ3の等差数列の数を返すことです。各進行において、要素間の違いは同じでなければなりません。入力配列は昇順でソートされることが保証されています。たとえば、関数への入力が たとえば、関数への入力が-の場合 入力 const arr = [1, 2, 3, 5

  2. C++の特定の文字列内のすべてのパリンドロームサブシーケンスをカウントします

    このチュートリアルでは、特定の文字列内のすべてのパリンドロームサブシーケンスの数を見つけるプログラムについて説明します。 このために、文字列が提供されます。私たちのタスクは、その特定の文字列で作成できるパリンドロームサブシーケンスの数を見つけることです。 例 #include<iostream> #include<cstring> using namespace std; //returning total palindromic sequence int count_palin(string str){    int N = str.length