Problem
Easy 난이도의 문제입니다.
주어진 숫자 n
을 이진수로 바꾸었을 때 0 과 1 이 연속으로 나오는 구간이 있는지 없는지 판단하는 문제입니다.
Solution
n
을 이진수로 바꾸어 줍니다.
길이가 1 이라면 반복되는 구간이 없기 때문에 항상 true
입니다.
인덱스 0 에 해당하는 문자 even
을 구하고 이와 반대되는 문자 odd
를 구합니다.
이진수 String
을 순회하며 인덱스가 짝수일 때와 홀수일 때 각각 even
과 odd
와 일치하는 지 확인합니다.
시간복잡도는 O(n)
입니다.
Java Code
class Solution { public boolean hasAlternatingBits(int n) { String bit = Integer.toString(n, 2); if (bit.length() == 1) { return true; } char even = bit.charAt(0); char odd = even == '0' ? '1' : '0'; for (int i = 0; i < bit.length(); i++) { if (i % 2 == 0 && even != bit.charAt(i)) { return false; } if (i % 2 != 0 && odd != bit.charAt(i)) { return false; } } return true; } }
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Easy] Repeated Substring Pattern (Java) (0) | 2020.09.05 |
---|---|
[LeetCode Medium] Find Bottom Left Tree Value (Java) (0) | 2020.07.23 |
[LeetCode Medium] Simplified Fractions (Java) (0) | 2020.06.24 |
[LeetCode Medium] Find the Minimum Number of Fibonacci Numbers Whose Sum Is K (Java) (0) | 2020.06.24 |
[LeetCode Medium] Search a 2D Matrix II (Java) (0) | 2020.05.14 |