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

文字列はJavaScriptで繰り返される部分文字列の組み合わせですか


問題

唯一の引数として文字列を受け取るJavaScript関数を作成する必要があります。この関数は、文字列strの部分文字列を取得し、その部分文字列の複数のコピーを一緒に追加することによって、文字列strを作成できるかどうかを確認する必要があります。

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

の場合
const str = 'thisthisthisthis';

その場合、出力は-

になります。
const output = true;

出力の説明:

文字列は「this」文字列を繰り返し追加して作成されるためです。

このためのコードは-

になります
const str = 'thisthisthisthis';
const repeatedSubstring = (str = '') => {
   const {length} = str;
   const checkSubString = ss => {
      const m = ss.length;
      for (let i = 0; i < length; i += m)
         for (let j = 0; j < m; j++)
            if (str[i+j] !== ss[j])
               return false;
      return true;
   };
   let factor = 2, len;
   while (length/factor >= 1){
      while (length % factor) factor++;
      len = length/factor;
      if (checkSubString(str.substring(0,len))){
         return true;
      };
      factor++;
   };
   return false;
};
console.log(repeatedSubstring(str));

コードの説明:

まず、部分文字列パターンチェック機能を設定します。

次に、文字列strを均等に分割する可能性のあるすべての要因を繰り返して、実行可能な繰り返しパターンが見つかったかどうかを判断しました。

出力

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

になります
true

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

    問題 S、strがあるとします。これは、文字列の無限のラップアラウンド文字列です- "abcdefghijklmnopqrstuvwxyz". したがって、Sは次のようになります- "...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....". strを取り込むJavaScript関数を作成する必要があります。その文字列strを唯一の引数として呼び出しましょう。 この関数は、strの一意の空でない部分文字列がSにいくつ存在するかを調べる必要があります。 この関数は、

  2. JavaScriptで時間文字列を修正する

    問題 「HH:MM:SS」形式の時間文字列を受け取るJavaScript関数を作成する必要があります。 しかし、それに加えて問題があり、多くのタイムストリングが壊れているため、MM部分が60を超え、SS部分も60を超える可能性があります。 この関数は、文字列に必要な変更を加えて、修正された新しい文字列を返す必要があります。 たとえば- "08:11:71" -> "08:12:11" 例 以下はコードです- const str = '08:11:71'; const rectifyTime = (str = '&#