Leetcode PHP題解--D58 693. Binary Number with Alternating Bits
D58 693. Binary Number with Alternating Bits
題目連結
693. Binary Number with Alternating Bits
題目分析
給定一個數字,返回其二進位制形式中,0和1是否交替出現。
思路
判斷給定的數字是否為奇數。
若為奇數,那麼最低位(即最右)會為1,那麼會重複出現01串。
若為偶數,最低位為0,那麼只能重複出現10串。
根據以上規則建立長度為給定數字二進位制長度一半的01串,並轉換為十進位制。
判斷轉換後的數字是否等於給定的字元。
最終程式碼
<?php class Solution { /** * @param Integer $n * @return Boolean */ function hasAlternatingBits($n) { $match = str_repeat($n%2==0?'10':'01',ceil(count(str_split(decbin($n)))/2)); return bindec($match) == $n; } }
若覺得本文章對你有用,歡迎用愛發電 資助。