美文网首页
拆分含0数组

拆分含0数组

作者: 蔚蓝新晨 | 来源:发表于2019-05-21 11:17 被阅读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数组

          本文链接:https://www.haomeiwen.com/subject/mppdzqtx.html