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

JavaScriptの循環文字列の一意のサブ文字列


問題

S、strがあるとします。これは、文字列の無限のラップアラウンド文字列です-

"abcdefghijklmnopqrstuvwxyz".

したがって、Sは次のようになります-

"...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".

strを取り込むJavaScript関数を作成する必要があります。その文字列strを唯一の引数として呼び出しましょう。

  • この関数は、strの一意の空でない部分文字列がSにいくつ存在するかを調べる必要があります。

  • この関数は、最終的に、文字列S内のstrの空でない異なる部分文字列の数を返す必要があります。

たとえば、関数への入力が-

の場合
const str = "zab";

その場合、出力は-

になります。
const output = 6;

出力の説明

文字列Sには、文字列「zab」の6つの部分文字列「z」、「a」、「b」、「za」、「ab」、「zab」があります。

このためのコードは-

になります
const str = "zab";
const allSubstrings = (str = '') => {
   const dp = new Array(26).fill(0);
   dp[str.charCodeAt(0) - 97] = 1;
   maxCount = 1;
   for (let i = 1; i < str.length; i++) {
      if ((str.charCodeAt(i) - str.charCodeAt(i - 1) == 1) || (str.charCodeAt(i) - str.charCodeAt(i - 1) == -25)) {
         maxCount++;
      } else {
         maxCount = 1;
      }
      dp[str.charCodeAt(i) - 97] = Math.max(dp[str.charCodeAt(i) - 97], maxCount);
   }
   return dp.reduce((item, val) => {
      return val + item;
   })
};
console.log(allSubstrings(str));

出力

そして、コンソールの出力は-

になります
6

  1. JavaScriptで一意の文字を含むように文字列をフィルタリングする

    問題 文字列strを受け取るJavaScript関数を作成する必要があります。この関数は、入力文字列から一意の文字のみを含む新しい文字列を作成し、重複する文字の出現をすべて削除する必要があります。 例 以下はコードです- const str = 'hey there i am using javascript'; const removeAllDuplicates = (str = '') => {    let res = '';    for(let i = 0; i < str.len

  2. JavaScriptを使用して文字列にすべての一意の文字が含まれているかどうかを確認する

    問題 文字列内のすべての文字が1回だけ表示される場合はtrueを返し、それ以外の場合はfalseを返すJavaScript関数を作成する必要があります。 例 以下はコードです- const str = 'thisconaluqe'; const allUnique = (str = '') => {    for(let i = 0; i < str.length; i++){       const el = str[i];       if(str.indexOf