2021-06-18

  • 统计集合中1连续出现的次数
List list = Arrays.asList(1, 0, 1, 0, 1, 1, 1, 0, 1, 1);

    int result = 1;
    for (int i = 0; i < list.size(); i++) {
      result = (result << 1) | list.get(i);
    }
    int origin = result & ((1 << list.size()) - 1);
    int temp = 1 << list.size() -2;
    //统计
    AtomicInteger count = new AtomicInteger();
    //map统计出现的次数(连续n次出现,m次连续段)
    Map map = Maps.newConcurrentMap();
    int i = 1;
    while (origin != 0) {
      if (i == list.size()) {
        count.addAndGet(1);
        getData(map, count);
      } else if ((origin & 1) == 1) {
        count.addAndGet(1);
      } else {
        getData(map, count);
      }
      origin = origin >> 1;
      i++;
    }
    System.out.println(map);

你可能感兴趣的:(2021-06-18)