Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การสลับตัวพิมพ์สตริงโดยใช้เลขฐานสองใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str และตัวเลข n ฟังก์ชันของเราควรเปลี่ยนสตริงที่กำหนดโดยใช้ n

แต่ละบิตใน 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