leetcode每日一题 868. 二进制间距

leetcode每日一题 868. 二进制间距

class Solution {
  public int binaryGap(int n) {
      char[] arr = Integer.toBinaryString(n).toCharArray();
      int[] res = new int[arr.length];
      int j = 0;
      for (int i = 0; i < arr.length; i++) {
          if(arr[i] == '1'){
              res[j++] = i;
          }
      }
      int result = 0;
      for (int i = 1; i < res.length; i++) {
          if(res[i] == 0){
              break;
          }
          result = Math.max(res[i]-res[i-1],result);
      }
      return result;
  }
}

 

简单优化一下

class Solution {
  public int binaryGap(int n) {
      int result = 0;
      String s = Integer.toBinaryString(n);
      int index = s.indexOf("1");
      for (int i = index + 1 ; i < s.length() ; i++){
          if(s.charAt(i) == '1'){
              result = Math.max(result,i-index);
              index = i;
          }
      }
      return result;
  }
}

 

 

posted @ 2022-04-24 08:51  java架构师1  阅读(22)  评论(0)    收藏  举报