package com.interview.dynamic; /** * http://www.geeksforgeeks.org/count-number-binary-strings-without-consecutive-1s/ * It is really a straight up fibonacci series with values * 1,2,3,5,8,13.... * Look how we assign a[i] value of a[i-1] + b[i-1] and then b[i] becomes a[i] */ public class CountNumberOfBinaryWithoutConsecutive1s { public int count(int n){ int a[] = new int[n]; int b[] = new int[n]; a[0] = 1; b[0] = 1; for(int i=1; i < n; i++){ a[i] = a[i-1] + b[i-1]; b[i] = a[i-1]; } return a[n-1] + b[n-1]; } public int countSimple(int n){ int a = 1; int b = 1; for(int i=1; i < n; i++){ int tmp = a; a = a + b; b = tmp; } return a + b; } public static void main(String args[]){ CountNumberOfBinaryWithoutConsecutive1s cnb = new CountNumberOfBinaryWithoutConsecutive1s(); System.out.println(cnb.count(5)); } }