#数据分类处理#treemap 集合类 lambda表达式

数据分类处理

https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String iString = in.nextLine();
        String rString = in.nextLine();

        String[] split = iString.split(" ");
        // 一次性创建足够大小的集合,避免扩容带来性能损耗
        ArrayList<Integer> iList = new ArrayList<>(Integer.parseInt(split[0]));
        for (int i = 1; i < split.length; i++) {
            iList.add(Integer.valueOf(split[i]));
        }

        split = rString.split(" ");
        // r -> i中包含r的索引集合,treemap自带去重和排序,
        TreeMap<Integer, List<Integer>> rMap = new TreeMap<>();
        for (int i = 1; i < split.length; i++) {
            rMap.put(Integer.parseInt(split[i]), new ArrayList<>());
        }

        ArrayList<Integer> result = new ArrayList<>(); // 结果集合

        rMap.forEach((r, list) -> { // 遍历所有的r
            for (int i = 0; i < iList.size(); i++) { // 遍历所有的i
                if (isContains(iList.get(i), r)) { // 如果i包含r
                    list.add(i); // 将i的索引添加到r的集合中
                }
            }
            // 遍历结束,将结果添加到结果集合
            if (list.size() > 0) {
                // r , 个数 , i1的索引 , i1 , i2的索引 , i2 .............
                result.add(r);
                result.add(list.size());
                list.forEach(index -> {
                    result.add(index);
                    result.add(iList.get(index));
                });
            }
        });

        // 打印结果
        System.out.print(result.size());
        result.stream().map(x -> " " + x).forEach(System.out::print);
        System.out.println();

    }

  // 判断i是否包含r
    private static boolean isContains(int i, int r) {
        // r = 23;  i = 231
        return String.valueOf(i).contains(String.valueOf(r));
    }
}

#treeMap#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务