J'ai écrit EX25 du guide de programmation AtCoder pour les débutants (APG4b) en java.

introduction

Cet article concerne le contenu d'AtCoder

AtCoder Programming Guide for beginners (APG4b)

J'ai essayé d'écrire la tâche EX25 - Opération d'assemblage publiée, donc je publierai le code sous forme de mémorandum. Je vous serais reconnaissant si vous pouviez le lire.

Si vous avez des points difficiles à lire, des erreurs ou des impressions, veuillez nous en informer dans les commentaires.

Utilisons l'opérateur bit! Je traite directement des valeurs entières ... (j'aurais aimé avoir implémenté bitSet en C ++. Y a-t-il ...?)

code

Main.java


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		Integer[] A = new Integer[N];
		for(int i = 0;i < N;i++) {
			A[i] = sc.nextInt();
		}
		int M = sc.nextInt();
		Integer[] B = new Integer[M];
		for(int i = 0;i < M;i++) {
			B[i] = sc.nextInt();
		}
		String command = sc.next();
		int x = 0;
		if(command.equals("subtract")) {
			x = sc.nextInt();
		}
		sc.close();
		switch(command) {
		case "intersection":
			printResult(intersection(A, B));
			break;
		case "union_set":
			printResult(unionset(A, B));
			break;
		case "symmetric_diff":
			printResult(symmetricdiff(A, B));
			break;
		case "subtract":
			printResult(subtract(A, x));
			break;
		case "increment":
			printResult(increment(A));
			break;
		case "decrement":
			printResult(decrement(A));
			break;
		default:
			break;
		}
	}
	/**
	 *Renvoie un ensemble d'éléments couramment contenus dans A et B
	 * @param A
	 * @param B
	 * @return Un tableau d'éléments communs
	 */
	private static Integer[] intersection(Integer[] A,Integer[] B) {
		List<Integer> Alist = Arrays.asList(A);
		List<Integer> Blist = Arrays.asList(B);
		List<Integer> result = new ArrayList<>();
		for(Integer i : Alist) {
			if(Blist.contains(i)) {
				result.add(i);
			}
		}
		if(result.size()==0) return null;
		Collections.sort(result);
		return  result.toArray(new Integer[result.size()]);
	}

	/**
	 *Renvoie un ensemble d'éléments contenus dans au moins l'un des éléments A et B
	 * @param A
	 * @param B
	 * @return Un tableau d'éléments contenus dans au moins un
	 */
	private static Integer[] unionset(Integer[] A,Integer[] B) {
		Set<Integer> result = new TreeSet<>(Comparator.naturalOrder());
		for(Integer i : A) result.add(i);
		for(Integer i : B) result.add(i);
		return result.size()==0 ? null : result.toArray(new Integer[result.size()]);
	}

	/**
	 *Renvoie un ensemble d'éléments contenus dans un seul des éléments A et B
	 * @param A
	 * @param B
	 * @return Un tableau d'éléments contenus dans un seul
	 */
	private static Integer[] symmetricdiff(Integer[] A,Integer[] B) {
		List<Integer> intersection = Arrays.asList(intersection(A, B));
		List<Integer> union = Arrays.asList(unionset(A, B));
		List<Integer> result = new ArrayList<>();
		for(Integer i : union) {
			if(union.contains(i) && !intersection.contains(i)) {
				result.add(i);
			}
		}
		if(result.size()==0) return null;
		Collections.sort(result);
		return result.toArray(new Integer[result.size()]);
	}

	/**
	 *Exclure la valeur x de l'ensemble A
	 * @param A
	 * @param x
	 * @return
	 */
	private static Integer[] subtract(Integer[] A, int x) {
		List<Integer> list = Arrays.asList(A);
		List<Integer> result = new ArrayList<>();
		for(Integer i : list) {
			if(i != x) {
				result.add(i);
			}
		}
		if(result.size()==0) return null;
		Collections.sort(result);
		return result.toArray(new Integer[result.size()]);
	}

	/**
	 *Ajoutez 1 à tous les éléments de A.
	 */
	private static Integer[] increment(Integer[] A) {
		List<Integer> result = new ArrayList<>();
		for(Integer i : A) {
			i++;
			if(i.equals(50)) {
				i = 0;
			}
			result.add(i);
		}
		if(result.size()==0) return null;
		Collections.sort(result);
		return result.toArray(new Integer[result.size()]);
	}

	/**
	 *Soustrayez 1 de tous les éléments de A.
	 */
	private static Integer[] decrement(Integer[] A) {
		List<Integer> result = new ArrayList<>();
		for(Integer i : A) {
			i--;
			if(i.equals(-1)) {
				i = 49;
			}
			result.add(i);
		}
		if(result.size()==0) return null;
		Collections.sort(result);
		return result.toArray(new Integer[result.size()]);
	}

	/**
	 *Sortie de résultat
	 */
	private static void printResult(Integer[] result) {
		if(result==null) {
			System.out.println("");
			return;
		}
		if(result.length > 1) {
			for(int i = 0;i < result.length-1;i++) {
				System.out.print(result[i] + " ");
			}
		}
		System.out.println(result[result.length-1]);
	}
}

Recommended Posts

J'ai écrit EX25 du guide de programmation AtCoder pour les débutants (APG4b) en java.
[Pour les débutants] Explication des classes, des instances et des statiques en Java
[Pour les débutants] Résumé du constructeur java
Les débutants jouent à des jeux Janken en Java
[Pour les débutants] Exécutez Selenium sur Java
J'ai écrit le théorème de Gordobach en java
Guide de style de programmation Java pour l'ère Java 11
Introduction du guide de programmation Java de nouvelle génération (Java 10)
Introduction du guide de programmation Java de nouvelle génération (Java 11)
Introduction du guide de programmation Java de nouvelle génération (Java 12)
[Pour les débutants] J'ai essayé d'utiliser DBUnit avec Eclipse
[Pour les débutants] J'ai essayé d'utiliser JUnit 5 avec Eclipse
J'ai écrit un programme de jugement des nombres premiers en Java
J'ai écrit un programme de factorisation prime en Java
[Introduction à Java] Bases de l'arithmétique Java (pour les débutants)
[Pour les débutants] DI ~ Les bases de DI et DI au printemps ~
[Pour les débutants] Comprendre rapidement les bases de Java 8 lambda
J'ai écrit sur Java downcast d'une manière facile à comprendre
[Pour les débutants] Exemple minimum pour afficher RecyclerView en Java
Introduction à Java pour les débutants Connaissance de base du langage Java ①
J'ai essayé d'utiliser l'instruction Extended for en Java
Liste des instructions Java fréquemment utilisées (pour les débutants et les débutants)
~ J'ai essayé d'apprendre la programmation fonctionnelle avec Java maintenant ~
Liste des instructions MySQL pour les débutants en programmation * Mémo personnel
Programmation par contraintes en Java
J'ai traduit [Méthode Clone pour les tableaux Java] comme méthode Clone dans les tableaux Java.
J'ai créé un client RESAS-API en Java
Concours de programmation AtCoder dwango B à résoudre en Ruby, Perl et Java
Réintroduction à Java for Humanities 0: Comprendre l'acte de programmation
[Java] Compréhension débutante de Servlet-②
Exécution de débogage Java [pour les débutants Java]
[Java] Compréhension débutante de Servlet-①
Java pour les débutants, masquage des données
Implémentation Java de tri-tree
Application Java pour les débutants: stream
J'ai essayé la métaprogrammation avec Java
[Java] Termes de base en programmation
Je vais expliquer l'imbrication des déclarations qui tuent les débutants
Gérer la logique métier pour un ensemble d'entités dans une classe Java
J'ai essayé de configurer les débutants Java pour qu'ils utilisent des touches de raccourci dans eclipse
J'ai écrit une sorte de livre qui ressemble à Java
[Pour les débutants] Exemple minimum pour mettre à jour RecyclerView avec DiffUtils en Java