二进制运行长度编码,重置计数器

时间:2017-11-02 19:17:05

标签: java arrays loops binary counter

我有一个数组:{0,0,1,0,0,1,1}

我想计算1之前有多少0 在0之前有多少1,

抱歉,如果基本上不清楚的话 它应该打印:2,1,2,2

(2个零,1个,2个零,2个)

我需要重置计数器,但我不知道该怎么做

谢谢

    public static void main(String[] args) {

                int tab[] = { 0, 0, 1, 0, 1, 1 }; //
                int count0 = 0;
                int count1 = 0;
                for (int i = 0; i < tab.length; i++) {
                    if (tab[i] == 0) {
                        count0 = count0 + 1;

                    } else {
                        count1 = count1 + 1;
                    }

                }
                System.out.println(count0 + "\t" + count1);
        // prints 4 3
        // want it to print 2 1 2 2

            }
        }

1 个答案:

答案 0 :(得分:0)

当值从0更改为1或从1更改为0时重置。 而且最后也是。

for (int num : tab) {
    if (num == 0) {
        count0++;
        if (count1 > 0) {
            System.out.println(count1);
            count1 = 0;
        }
    } else {
        count1++;
        if (count0 > 0) {
            System.out.println(count0);
            count0 = 0;
        }
    }
}
System.out.println(Math.max(count0, count1));