Leetcode Java Bitwise AND of Numbers Range

업데이트:

문제

Link

코드

public class Solution {

  public int rangeBitwiseAnd(int left, int right) {
    int count = 0;
    while (left != right) {
      left >>= 1;
      right >>= 1;
      count++;
    }
    return left << count;
  }

}

결과

Link

설명

  1. 주어진 정수 left와 right의 binary code 중 공통된 접두사를 찾아 해당 값을 반환하는 문제이다.

  2. 공통된 접두사를 찾기 위해 이동한 횟수를 저장할 변수인 count를 정의하고 0으로 초기화 한다.

  3. left와 right가 동일한 값이 되기 전까지 두 값의 bit를 한 칸 오른쪽으로 이동시키고, count를 증가시킨다.
    • left와 right의 bit를 우측으로 계속 이동하다 동일한 값이 되는 구간이 두 값의 공통된 접두사가 되는 지점이다.
  4. 공통된 접두사가 저장된 left에 우측으로 이동한 횟수인 count만큼 좌측으로 이동시켜 해당 값을 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기