Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 이진수를 사용하여 문자열 대소문자 바꾸기

<시간/>

문제

문자열 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