partiel.pdf

Exercice 1

Question 1

public static Map<String, Integer> wordCount(String... words) {
		final Map<String, Integer> wordCount = new HashMap<>();
    for(String word : words) {
         wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
    }
     return wordCount;
}

public static void printWordCount(Map<String, Integer> wordCount) {
		for(Map.Entry<String, Integer> entry : wordCount.entrySet()) {
		    System.out.println(entry.getKey() + ": " + entry.getValue());
    }
}

Exercice 2

Question 1

    public static void main(String[] args) {
        String[] words = {"dormir", "mordir", "parisien", "aspirine", "pinerais", "sapinier"};
        Map<String, Integer> anagramCount = new HashMap<>();
        Map<String, String> wordToSignature = new HashMap<>();

        for (String word : words) {
            final String signature = getSignature(word);

            anagramCount.put(signature, anagramCount.getOrDefault(signature, 0) + 1);
            // Stocker la correspondance entre le mot original et sa version triée
            wordToSignature.put(word, signature);
        }

        printWordCount(words, wordToSignature, anagramCount);
    }

    public static String getSignature(String word) {
        final char[] chars = word.toLowerCase().toCharArray();
        Arrays.sort(chars);
        return new String(chars);
    }

    public static void printWordCount(String[] words, Map<String, String> wordToSorted, Map<String, Integer> anagramCount) {
        for(String word : words) {
            String sortedWord = wordToSorted.get(word);
            System.out.println(word + ": " + anagramCount.get(sortedWord));
        }
    }

Exercice 3

Question 1

    public static Node mirrorTree(Node root) {
        if(root == null) return null;

        final Node newNode = new Node(root.val);
        newNode.left = mirrorTree(root.right);
        newNode.right = mirrorTree(root.left);

        return newNode;
    }

Exercice 4