Java 開發

import java.util.*; /** * Declaration: All Rights Reserved !!! */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Scanner scanner = new Scanner(Main.class.getClassLoader().getResourceAsStream("data.txt")); while (scanner.hasNext()) { // 整數序列I int iNum = scanner.nextInt(); int[] iArr = new int[iNum]; for (int i = 0; i < iNum; i++) { iArr[i] = scanner.nextInt(); } // 規則整數序列R,過濾掉了重複數字,並且按從小到大進行了排序 int rNum = scanner.nextInt(); SortedSet<Integer> rSet = new TreeSet<>(); for (int i = 0; i < rNum; i++) { rSet.add(scanner.nextInt()); } System.out.println(dataClassify(rSet, iArr)); } scanner.close(); } /** * 將rSet中的數據進行分類 * * @param rSet 數據已經按從小到大進行了排序 * @param iArr 待查找的數組 * @return 查找結果 */ private static String dataClassify(SortedSet<Integer> rSet, int[] iArr) { List<Integer> result = new LinkedList<>(); for (int r : rSet) { dataClassify(r, iArr, result); } StringBuilder builder = new StringBuilder(); builder.append(result.size()).append(' '); for (int i : result) { builder.append(i).append(' '); } return builder.substring(0, builder.length() - 1); } /** * 找數組iArr中包含r的下標和數字 * * @param r 待匹配的數字 * @param iArr 查找的數組 * @param result 查找的結果。保存所有的結果 */ private static void dataClassify(int r, int[] iArr, List<Integer> result) { // 保存結果的對象 List<Integer> temp = new LinkedList<>(); for (int i = 0; i < iArr.length; i++) { // 找到匹配的就將下標和值添加到結果中 if (check(r, iArr[i])) { temp.add(i); temp.add(iArr[i]); } } // 如果找到數字 if (!temp.isEmpty()) { result.add(r); result.add(temp.size() / 2); result.addAll(temp); } } /** * 判斷r中是否包含j * * @param r 要包含的數字 * @param i 待匹配的數字 * @return 匹配結果 */ private static boolean check(int r, int i) { return ("" + i).contains("" + r); } }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章