package com.fishercoder.solutions;

import java.util.ArrayList;
import java.util.List;

/**
 * 868. Binary Gap
 *
 * Given a positive integer N, find and return the longest distance between two consecutive 1's in the binary representation of N.
 *
 * If there aren't two consecutive 1's, return 0.
 *
 * Example 1:
 * Input: 22
 * Output: 2
 * Explanation:
 * 22 in binary is 0b10110.
 * In the binary representation of 22, there are three ones, and two consecutive pairs of 1's.
 * The first consecutive pair of 1's have distance 2.
 * The second consecutive pair of 1's have distance 1.
 * The answer is the largest of these two distances, which is 2.
 *
 * Example 2:
 * Input: 5
 * Output: 2
 * Explanation:
 * 5 in binary is 0b101.
 *
 * Example 3:
 * Input: 6
 * Output: 1
 * Explanation:
 * 6 in binary is 0b110.
 *
 * Example 4:
 * Input: 8
 * Output: 0
 * Explanation:
 * 8 in binary is 0b1000.
 * There aren't any consecutive pairs of 1's in the binary representation of 8, so we return 0.
 *
 * Note:
 * 1 <= N <= 10^9
 */
public class _868 {
  public static class Solution1 {
    public int binaryGap(int N) {
      String bin = Integer.toBinaryString(N);
      List<Integer> oneIndexes = new ArrayList<>();
      for (int i = 0; i < bin.length(); i++) {
        if (bin.charAt(i) == '1') {
          oneIndexes.add(i);
        }
      }
      int maxGap = 0;
      for (int i = 0; i < oneIndexes.size() - 1; i++) {
        maxGap = Math.max(oneIndexes.get(i + 1) - oneIndexes.get(i), maxGap);
      }
      return maxGap;
    }
  }
}

@@ -85,954 +85,8 @@
 t;%0A%0A
-/**%0A * 868. Binary Gap%0A *%0A * Given a positive integer N, find and return the longest distance between two consecutive 1's in the binary representation of N.%0A *%0A * If there aren't two consecutive 1's, return 0.%0A *%0A * Example 1:%0A * Input: 22%0A * Output: 2%0A * Explanation:%0A * 22 in binary is 0b10110.%0A * In the binary representation of 22, there are three ones, and two consecutive pairs of 1's.%0A * The first consecutive pair of 1's have distance 2.%0A * The second consecutive pair of 1's have distance 1.%0A * The answer is the largest of these two distances, which is 2.%0A *%0A * Example 2:%0A * Input: 5%0A * Output: 2%0A * Explanation:%0A * 5 in binary is 0b101.%0A *%0A * Example 3:%0A * Input: 6%0A * Output: 1%0A * Explanation:%0A * 6 in binary is 0b110.%0A *%0A * Example 4:%0A * Input: 8%0A * Output: 0%0A * Explanation:%0A * 8 in binary is 0b1000.%0A * There aren't any consecutive pairs of 1's in the binary representation of 8, so we return 0.%0A *%0A * Note:%0A * 1 %3C= N %3C= 10%5E9%0A */%0A
 publ
@@ -101,16 +101,18 @@
  _868 %7B%0A
+  
   public
@@ -137,24 +137,28 @@
 tion1 %7B%0A    
+   
+ 
 public int b
@@ -171,24 +171,30 @@
 ap(int N) %7B%0A
+      
       String
@@ -233,16 +233,22 @@
 ;%0A      
+ 
+     
 List%3CInt
@@ -283,32 +283,38 @@
 List%3C%3E();%0A      
+   
+   
 for (int i = 0; 
@@ -346,16 +346,24 @@
         
+     
+   
 if (bin.
@@ -378,24 +378,34 @@
 ) == '1') %7B%0A
+          
           on
@@ -429,24 +429,46 @@
         
+    
+    %7D%0A            
 %7D%0A      
 %7D%0A      
@@ -455,26 +455,24 @@
     %7D%0A      
-%7D%0A
       int ma
@@ -481,16 +481,22 @@
 ap = 0;%0A
+      
       fo
@@ -535,32 +535,40 @@
 e() - 1; i++) %7B%0A
+        
         maxGap =
@@ -631,26 +631,38 @@
 Gap);%0A      
+  
-%7D%0A
+    %7D%0A      
       return
@@ -674,16 +674,22 @@
 ap;%0A    
-%7D%0A
+    %7D%0A  
   %7D%0A%7D%0A

refactor 868