题解 | #数据分类处理#

数据分类处理

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

import java.util.Scanner;
import java.util.TreeSet;
import java.util.ArrayList;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int ILength = in.nextInt();
            int[] IArr = new int[ILength];
            for (int i = 0; i < ILength; i++) {
                IArr[i] = in.nextInt();
            }
            int RLength = in.nextInt();
            int[] RArr = new int[RLength];
            for (int i = 0; i < RLength; i++) {
                RArr[i] = in.nextInt();
            }

            int[] newRArr = getRArr(RArr);

            ArrayList<String> output = new ArrayList<String>();

            output = getResult(IArr, newRArr);

            for (int i = 0; i < output.size(); i++) {
                if (i < output.size() - 1) {
                    System.out.print(output.get(i));
                    System.out.print(" ");
                } else {
                    System.out.print(output.get(i));
                }

            }

            // for (int i = 0; i < newRArr.length; i++) {
            //     System.out.print(newRArr[i]);
            //     System.out.print("  ");
            // }
            // System.out.print("\n");
            // for (int i = 0; i < IArr.length; i++) {
            //     System.out.print(IArr[i]);
            //     System.out.print("  ");
            // }

        }
    }

    //返回去重排序的R序列
    public static int[] getRArr(int[] input) {
        int length = input.length;
        TreeSet<Integer> TS = new TreeSet<Integer>();
        for (int i = 0; i < length; i++) {
            TS.add(Integer.valueOf(input[i]));
        }
        int size = TS.size();
        int[] result = new int[size];
        int n = 0;
        for (Integer i : TS) {
            result[n] = i.intValue();
            n++;
        }
        return result;
    }

    //输入IArr和去重排序后的RArr,返回目标ArrayList
    public static ArrayList<String> getResult(int[] I, int[] R) {
        ArrayList<String> result = new ArrayList<String>();
        int Ilength = I.length;
        int Rlength = R.length;
        for (int i = 0; i < Rlength; i++) {
            int count = 0;
            String Rnum = String.valueOf(R[i]);
            for (int j = 0; j < Ilength; j++) {
                String Inum = String.valueOf(I[j]);
                if (Inum.contains(Rnum)) {
                    if (count == 0) {
                        result.add(Rnum);
                        //System.out.println(Rnum);
                    }
                    count++;
                    result.add(String.valueOf(j));
                    result.add(Inum);
                }
            }
            if (count != 0) {
                result.add(result.size() - count * 2,
                           String.valueOf(count)); //插入符合个数
            }
        }

        result.add(0, String.valueOf(result.size()));

        return result;
    }


}

全部评论

相关推荐

04-28 11:34
西北大学 运营
牛客4396号:不好意思,这个照片猛一看像丁真
点赞 评论 收藏
分享
03-31 17:40
已编辑
门头沟学院 算法工程师
程序员牛肉:小牛肉来也! 也不要焦虑啦,你第一志愿还没有结束,只是回到人才库(泡大池子等待各个部门挑选)而已。仅仅代表你不符合这个组的用人标准,并不能够说明你在本次暑期实习中没机会加入美团了。 还是平复好心态,不断的复盘,等待下一次面试就好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务