コーディング面接対策サイトCodilityの練習問題を解いてみた(BinaryGap)
問題
nを二進数にして、1に囲まれた0の数を数える
回答
def solution(n) s = n.to_s(2) zeroes = s.split('1') zeroes.pop if n % 2 == 0 return 0 if zeroes.empty? zeroes.map{ |z| z.length }.max end # debug puts solution(20) == 1 puts solution(6) == 0 puts solution(1041) == 5 puts solution(255) == 0 puts solution(529) == 4 puts solution(66666) == 5 puts solution(1024) == 0 puts solution(9) == 2 puts solution(11) == 1
感想
この書き方、知らなかった。
9.to_s(2) #=> "1001"