JavaScript를 사용하여 이진 간격 해결
2025 단어 tutorialwebdevcodilityjavascript
의문
양의 정수 N 내의 이진 간격은 N의 이진 표현에서 양쪽 끝이 1로 둘러싸인 연속 0의 최대 시퀀스입니다.
예를 들어, 숫자 9는 이진 표현 1001을 가지며 길이 2의 이진 간격을 포함합니다. 숫자 529는 이진 표현 1000010001을 가지며 길이 4 중 하나와 길이 3의 두 이진 간격을 포함합니다. 숫자 20은 이진 표현 10100을 가지며 다음을 포함합니다. 길이가 1인 하나의 이진 갭. 숫자 15는 이진 표현(1111)을 갖고 이진 갭이 없습니다. 숫자 32는 이진수 표현이 100000이고 이진수 간격이 없습니다.
함수 작성:
함수 솔루션(N);
양의 정수 N이 주어지면 가장 긴 이진 간격의 길이를 반환합니다. N에 이진 간격이 포함되어 있지 않으면 함수는 0을 반환해야 합니다.
예를 들어, N = 1041이 주어지면 함수는 5를 반환해야 합니다. N은 이진수 표현이 10000010001이므로 가장 긴 이진 간격의 길이는 5이기 때문입니다. N = 32가 주어지면 함수는 0을 반환해야 합니다. 바이너리 갭이 없습니다.
다음 가정에 대한 효율적인 알고리즘을 작성하십시오.
N은 [1..2,147,483,647] 범위 내의 정수입니다.
고장
여기서 우리의 예는 숫자 10041입니다.
이 문제를 해결하려면 0의 수를 세는 데 도움이 되는 포인터 i와 j가 필요합니다.
그 후에 우리는 다음을 수행해야 합니다.
솔루션 코드
위의 분석에서 코드 솔루션은 다음과 같습니다.
function solution(N){
let binaryN = (N >>>0).toString(2); //Changes the binary number to string
let maxGap = 0; //sets the maximum number of binary gaps to 0
for(let i = 0; i<binaryN.length; i++){ //sets the counter i to zero and loops through the entire binary length while incrementing by 1
for(let j=i; j<binaryN.length; j++){ //sets the counter j to i and loops through the entire binary length while incrementing by 1
if(binaryN[i] == 1 && binaryN[j] && i!=j){ //checks whether both i and j are equal to 1 but not equal to each other
if(maxGap< j-i-1){ //Calculates the maximum gap
maxGap = j-i-1;
}
i=j;
}
}
}
return maxGap;
}
Reference
이 문제에 관하여(JavaScript를 사용하여 이진 간격 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/_algowhacks/solving-for-binary-gap-using-javascript-a1p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)