记一次算法题,输出连续递增数字

原题,例如输入  1,2,3,5,6,7,8,9,11,13,14

  输出 1-3,5-9,11,13-14

public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[] split = s.split(",");
        if ( split.length == 0 ){
            System.out.println("");
            return;
        }
        if ( split.length == 1 ){
            System.out.println(split[0]);
            return;
        }
        List<String> ls = new ArrayList<>();
        int begin = Integer.valueOf(split[0]);
        int end = Integer.valueOf(split[0]);
        for (int i = 1; i < split.length; i++) {
            int z = Integer.valueOf(split[i]);
            if ( z != (++end)  ){
                ls.add(begin== (end-1)? String.valueOf(begin):begin+"-"+(end-1));
                begin = end= z;
            }
            if ( i == split.length-1 ){
                ls.add(begin== end? String.valueOf(begin):begin+"-"+end);
            }
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i <ls.size() ; i++) {
            sb.append(ls.get(i));
            if ( i != ls.size()-1 ){
                sb.append(",");
            }
        }
        System.out.println(sb.toString());
    }

  牛客网机试一直说未通过全部示例,但是我本地测试了很多不同的案例都没看到问题。不知道问题究竟在哪儿。还是我可能理解的有误

posted @ 2020-03-28 18:13  雨落寒沙  阅读(280)  评论(0编辑  收藏  举报