【问题标题】:Binary Run Length Encoding , reset counter二进制运行长度编码,重置计数器
【发布时间】:2018-04-15 10:24:11
【问题描述】:

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

我要数1之前有多少个0 以及 0 之前有多少个 1,

对不起,如果基本上不清楚 它应该打印: 2 , 1 , 2 , 2

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

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

谢谢

    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

            }
        }

【问题讨论】:

    标签: java arrays loops binary counter


    【解决方案1】:

    当值从 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));
    

    【讨论】:

    • 非常感谢
    • @Blebhebhe 它是for-each loop。该语法从 Java 5 开始就存在。这是一种更惯用的方式来遍历集合中的项目,当您不需要索引时,只需要项目本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多