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

JavaScriptで2進数を使用して文字列の大文字と小文字を入れ替える


問題

文字列strと数値nを受け取るJavaScript関数を作成する必要があります。この関数は、nを使用して指定された文字列strを変更する必要があります。

nの各ビットは、s-

の各英字の大文字と小文字を入れ替えるかどうかを指定します。

ビットが1の場合、大文字と小文字を入れ替えます。 0の場合は、そのままにしておきます。 nの最後のビットで終了したら、最初のビットからやり直します。

そして最後に、このように形成された新しい文字列を返す必要があります。

以下はコードです-

const str = 'hey there';
const num = 21;
const swapCase = (str = '', num = 1) => {
   const alphaLength = str
   .split('')
   .reduce((acc, val) => val.toLowerCase() !== val.toUpperCase() ? ++acc : acc, 0);
   let binary = num.toString(2);
   while(binary.length < alphaLength){
      binary += binary;
   };
   let res = '';
   for(let i = 0; i < str.length; i++){
      const el = str[i];
      if(el.toUpperCase() !== el.toLowerCase() && +binary[i] === 1){
         if(el.toLowerCase() === el){
            res += el.toUpperCase();
         }else{
            res += el.toLowerCase();
         }
      }else{
         res += el;
      };
   };
   return res;
};
console.log(swapCase(str, num));

出力

以下はコンソール出力です-

HeY TheRe

  1. JavaScriptを使用して文字列番号の桁の後半をゼロに変更する

    問題 唯一の引数として文字列番号を受け取るJavaScript関数を作成する必要があります。 この関数は、数字の後半が0に変更された入力数値を返す必要があります。 桁数が奇数の場合は、中桁以降を0に変更してください。 例- 938473 → 938000 例 以下はコードです- const num = '938473'; const convertHalf = (num = '') => {    let i = num.toString();    let j = Math.floor(i.le

  2. JavaScriptを使用してバイナリ文字列の最小フリップを見つける

    単調に増加する文字列: 「0」と「1」の文字列は、いくつかの「0」(場合によっては0)と、それに続くいくつかの「1」(場合によっては0)で構成される場合、単調に増加します。 問題 最初で唯一の引数としてバイナリ文字列strを受け取るJavaScript関数を作成する必要があります。 文字列に存在する任意の「0」を「1」に、または任意の「1」を「0」に反転できます。この関数は、Sを単調に増加させるために、最小のフリップ数を返す必要があります。 たとえば、関数への入力が 入力 const str = '00110'; 出力 const output = 1; 出力