拆分含0数组

前几天有个需求是这样的:

一个数组  [1,1,1,1,0,1,1,1,0,1,1,0],拆分成[[1,1,1,1,0],[1,1,1,0],[1,1,0]]怎么拆。
就是碰到0了就把0和0前面的放到一个数组内。并且如果末尾都是1的话那么久把末尾所有的1都放在一个数组内。
如果数组中包含-1的话,就删除所有的-1. 

研究了半天,基本思路是先判断0的位置,然后进行截取,遇到0就把0和0前面的1放到一个新的数组内。废话不多说了,上代码吧。

import java.util.ArrayList;
import java.util.Iterator;

class aa {
    public static void main(String[] args) {

        ArrayList cc = new ArrayList<>();
        cc.add("1");
        cc.add("1");
        cc.add("0");
        cc.add("0");
        cc.add("0");
        cc.add("1");
        cc.add("1");
        cc.add("0");
        cc.add("1");
        cc.add("-1");

        System.out.println(cc);

        // 删除list中为-1的数据
        for (int i = 0; i < cc.size(); i++) {
            if ((cc.get(i)).equals("-1")) {
                cc.remove(cc.get(i));
                i--;
            }
        }

        System.out.println(cc);

        ArrayList addr = new ArrayList<>();
        for (int i = 0; i < cc.size(); i++) {
            if (cc.get(i).equals("0")) {
                addr.add(i);
            }
        }
        System.out.println(addr);

        // 根据0的位置进行截断
        ArrayList ccss = new ArrayList<>();
        ArrayList ccsss = new ArrayList<>();
        for (int i = 0; i < addr.size(); i++) {
            for (int j = 0; j <= (int) addr.get(i); j++) {
                ccss.add(cc.get(j));
                if (j == (int) addr.get(i)) {
                    System.out.println(ccss);
                    ccsss.add(ccss);
                }
                if (cc.get(j).equals("0")) {
                    ccss = new ArrayList<>();
                }
            }
        }

        // 获取最后剩余的1为一个新的数组
        if ((cc.get(cc.size() - 1)).equals("1")) {
            for (int i = cc.size() - 1; i >= 0; i--) {
                if ((cc.get(i)).equals("0")) {
                    break;
                } else {
                    ccss.add(cc.get(i));
                }
            }
            ccsss.add(ccss);
        }

        System.out.println(ccsss);
    }
}

OK,结束,记录一下!

你可能感兴趣的:(拆分含0数组)