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

JavaScriptで文字列内でシフトを実行する


小文字の英字を含む文字列strと、配列arrの配列があるとします。ここでarr [i] =[direction、amount] −

  • 方向は0(左シフトの場合)または1(右シフトの場合)になります。

  • amountは、文字列sをシフトする量です。

  • 1だけ左シフトすると、sの最初の文字が削除され、最後に追加されます。

  • 同様に、1だけ右にシフトすると、sの最後の文字が削除され、先頭に追加されます。

最初の引数として文字列を取り、2番目の引数としてシフトデータを含む配列を受け取るJavaScript関数を作成する必要があります。

関数は配列を反復処理し、文字列で必要なシフトを実行して、最後に新しい文字列を返す必要があります。

例-

入力文字列と配列が-

の場合
const str = 'abc';
const arr = [[0, 1], [1, 2]];

その場合、出力は-

になります。
const output = 'cab';

なぜなら、

[0,1]は、左に1シフトすることを意味します。「abc」->「bca」

[1,2]は、右に2シフトすることを意味します。「bca」->「cab」

このためのコードは-

になります
const str = 'abc';
const arr = [[0, 1], [1, 2]];
const performShifts = (str = '', arr = []) => {
   if(str.length < 2){
      return str;
   };
   let right = 0
   let left = 0;
   for(let sub of arr){
      if(sub[0] == 0){
         left += sub[1];
      }else{
         right += sub[1];
      };
   };
   if(right === left){
      return str;
   }
   if(right > left){
      right = right - left;
      right = right % str.length;
      return str.substring(str.length - right) + str.substring(0,
      str.length - right);
   }else{
      left = left - right;
      left = left % str.length;
      return str.substring(left) + str.substring(0,left);
   };
};
console.log(performShifts(str, arr));

出力

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

になります
cab

  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 = '&#