题解 | #数据分类处理#
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
import java.util.Scanner; // 注意类名必须为 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 a = in.nextInt(); // int b = in.nextInt(); // System.out.println(a + b); // } String line1 = in.nextLine(); int ifirst = line1.indexOf(' '); int ilen = Integer.parseInt(line1.substring(0, ifirst)); String[] I = line1.substring(ifirst + 1).split(" "); String line2 = in.nextLine(); int rfirst = line2.indexOf(' '); int rlen = Integer.parseInt(line2.substring(0, rfirst)); String[] R = line2.substring(rfirst + 1).split(" "); sort(R); Node[] nodes = new Node[rlen]; int index = 0; for (int i = 0; i < rlen; i++) { if (i > 0 && R[i].equals(R[i - 1])) { continue; } int count = 0; int[] containIndex = new int[ilen]; boolean contains = false; for (int j = 0; j < ilen; j++ ) { if (I[j].contains(R[i])) { containIndex[count] = j; count++; contains = true; } } if (contains) { Node node = new Node(); node.containIndex = containIndex; node.count = count; node.r = R[i]; nodes[index] = node; index++; } else { continue; } } int sum = 0; for (int i = 0; i < index; i++) { sum = sum + nodes[i].count * 2 + 2; } System.out.print(sum + " "); for (int i = 0; i < index; i++) { System.out.print(nodes[i].r + " " + nodes[i].count + " "); for (int j = 0; j < nodes[i].count; j++) { System.out.print(nodes[i].containIndex[j] + " " + I[nodes[i].containIndex[j]] + " "); } } } private static void sort(String [] arr) { for (int i = 0; i < arr.length; i++) { for (int j = i; j < arr.length; j++) { if (Integer.parseInt(arr[i]) > Integer.parseInt(arr[j])) { String temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } } class Node { protected String r; protected int count; protected int[] containIndex; }